SAP HANA - SQL表达式

Expression用于评估子句以返回值.可以在HANA中使用不同的SQL表达式;

  • 案例表达式

  • 功能表达式

  • 聚合表达式

  • 表达式中的子查询

案例表达

这用于在SQL表达式中传递多个条件.它允许使用IF-ELSE-THEN逻辑而不使用SQL语句中的过程.

示例

SELECT COUNT( CASE WHEN sal < 2000 THEN 1 ELSE NULL END ) count1,
COUNT( CASE WHEN sal BETWEEN 2001 AND 4000 THEN 1 ELSE NULL END ) count2,
COUNT( CASE WHEN sal > 4000 THEN 1 ELSE NULL END ) count3 FROM emp;

此语句将按照传递的条件返回count1,count2,count3及整数值.

函数表达式

函数表达式涉及在表达式中使用的SQL内置函数.

聚合表达式

聚合函数用于执行复杂计算,如Sum,Percentage,Min,Max,Count,Mode,Median等.聚合表达式使用聚合函数从多个值计算单个值.

聚合函数 : 总和,计数,最小值,最大值.这些应用于度量值(事实),它始终与维度相关联.

常见的聚合函数包括 :

  • 平均()

  • 计数()

  • 最高()

  • 中位数()

  • 最小值()

  • 模式()

  • Sum()

表达式中的子查询

作为表达式的子查询是Select语句.当它在表达式中使用时,它返回零或单个值.

子查询用于返回将在主查询中使用的数据,作为进一步限制要检索的数据.

子查询可以与SELECT,INSERT,UPDATE和DELETE语句一起使用,也可以与=,<,>,> =,<等运算符一起使用. =,IN,BETWEEN等.

子查询必须遵循以下几条规则;

  • 子查询必须括在括号内.

  • 子查询只能在SELECT子句中有一列,除非主查询中有多列用于子查询比较其选定的列.

  • ORDER BY不能在子查询中使用,尽管主查询可以使用ORDER BY. GROUP BY可用于执行与子查询中的ORDER BY相同的功能.

  • 返回多行的子查询只能用于多个值运算符,例如IN运算符.

  • SELECT列表不能包含对计算为BLOB,ARRAY,CLOB或NCLOB的值的任何引用.

  • 子查询不能立即包含在集合函数中.

  • BETWEEN运算符不能与子查询一起使用;但是,BETWEEN运算符可以在子查询中使用.

带有SELECT语句的子查询

子查询最常与SELECT语句一起使用.基本语法如下 :

示例

 
 SELECT * FROM CUSTOMERS 
 WHERE ID IN(SELECT ID 
 FROM CUSTOMERS 
 WHERE SALARY> 4500);

+----+----------+-----+---------+----------+
| ID | NAME     | AGE | ADDRESS | SALARY   |
+----+----------+-----+---------+----------+
| 4  | Chaitali | 25  | Mumbai  | 6500.00  |
| 5  | Hardik   | 27  | Bhopal  | 8500.00  |
| 7  | Muffy    | 24  | Indore  | 10000.00 |
+----+----------+-----+---------+----------+