landbase-org / landbase

2023 Oceanbase miniob repo
Mulan Permissive Software License, Version 2
3 stars 0 forks source link

expression #6

Open Selflocking opened 1 year ago

Selflocking commented 1 year ago

赛题描述

实现表达式功能。

各种表达式运算是SQL的基础,有了表达式,才能使用SQL描述丰富的应用场景。

这里的表达式仅考虑算数表达式,可以参考现有实现的calc语句,可以参考 表达式解析 ,在SELECT语句中实现。

如果有些表达式运算结果有疑问,可以在MySQL中执行相应的SQL,然后参考MySQL的执行即可。比如一个数字除以0,应该按照NULL类型的数字来处理。

当然为了简化,这里只有数字类型的运算。

赛题地址

https://open.oceanbase.com/train/TopicDetails?questionId=600004&subQesitonId=800018&subQuestionName=expression

往年情况

2022年

  1. 查询中支持运算表达式,这里的运算表达式包括 +-*/。运算只需要考虑整数和浮点数的转换。
  2. 仅支持基本数据的运算即可,不对date字段做考察。 运算出现异常,按照NULL规则处理。
  3. 只会出现在select语句中。
  4. 需要考虑聚合运算。

测试用例示例:

select * from t1,t2 where t1.age +10 > t2.age * 2 + 3-(t1.age +10)/3;
select t1.col1+t2.col2 from t1,t2 where t1.age +10 > t2.age *2 + 3-(t1.age +10)/3;
select min(col1)+avg(col2)*max(col3) from exp_table where id < 10;

https://open.oceanbase.com/train/TopicDetails?questionId=500003&subQesitonId=700065&subQuestionName=expression

2021年

查询中支持运算表达式,这里的运算表达式包括 +-*/。

仅支持基本数据的运算即可,不对date字段做考察。

运算出现异常,按照NULL规则处理。

只需要考虑select。

https://open.oceanbase.com/train/TopicDetails?questionId=200001&subQesitonId=400015&subQuestionName=expression

Selflocking commented 12 months ago

image

Selflocking commented 12 months ago

IMG_20231106_024939