• SAP HANA Video Tutorials

SAP HANA - SQL 表达式



表达式用于计算一个子句以返回值。HANA 中可以使用不同的 SQL 表达式 -

  • Case 表达式
  • 函数表达式
  • 聚合表达式
  • 表达式中的子查询

Case 表达式

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

示例

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 内置函数。

聚合表达式

聚合函数用于执行复杂的计算,如总和、百分比、最小值、最大值、计数、众数、中位数等。聚合表达式使用聚合函数从多个值计算单个值。

聚合函数 - 总和、计数、最小值、最大值。这些应用于度量值(事实),并且始终与维度相关联。

常见的聚合函数包括 -

  • 平均值 ()
  • 计数 ()
  • 最大值 ()
  • 中位数 ()
  • 最小值 ()
  • 众数 ()
  • 总和 ()

表达式中的子查询

作为表达式的子查询是一个 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 |
+----+----------+-----+---------+----------+
广告