Having condition 在 group by 执行完毕后才 evaludate
SAP CDS (Core Data Services) 是一个用于定义和消费数据模型的基础设施。CDS 提供了一种新的数据建模方式,它能够在数据库层定义复杂的视图,以提供更高效的数据访问。
HAVING 关键字在 SQL 中常常与
GROUP BY 关键字一起使用,用于在对查询结果进行分组后进行过滤。相对于
WHERE 关键字在分组之前对原始数据进行过滤,
HAVING 关键字能够在分组后,对聚合函数(如 COUNT、SUM、AVG 等)的结果进行过滤。
在 SAP CDS view 中,
HAVING 关键字的用法与 SQL 中类似。以下是一个简单的例子:
在这个例子中,我们首先从 snwd_so 表中选择数据,然后按照货币类型(currency_code)进行分组。每个货币类型对应的总销售额(TotalAmount)通过
sum 聚合函数计算得出。最后,我们使用
HAVING 关键字过滤出总销售额大于 10000 的货币类型。
需要注意的是,
HAVING 关键字可以使用任何聚合函数的结果进行过滤,但不能直接使用原始数据列。例如,以下的语句是错误的:
在这个错误的例子中,我们试图在
HAVING 关键字中直接使用原始数据列 gross_amount,这是不允许的。在
HAVING 关键字中,只能使用被
GROUP BY 关键字分组的列和聚合函数的结果。
总结一下,SAP CDS view 中的
HAVING 关键字是一个强大的工具,它能够在数据分组后对聚合函数的结果进行过滤。这在处理大量数据,需要进行分组和聚合的场景中非常有用。但需要注意,
HAVING 关键字不能直接使用原始数据列,只能使用被
GROUP BY 关键字分组的列和聚合函数的结果。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24475491/viewspace-2969970/ ,如需转载,请注明出处,否则将追究法律责任。