Apache Flink SQL 支持多种分组聚合函数,这些函数在进行数据处理时用于将数据集根据一个或多个列的值进行分组,并对每个组应用某种计算。以下是一些常见的分组聚合函数:
1.COUNT():
o COUNT(*):计算分组中的行数。
o COUNT(column_name):计算指定列中非NULL 值的数量。
2.SUM():
column函数公式怎么用
o SUM(column_name):计算指定列所有数值的总和。
3.AVG():
o AVG(column_name):计算指定列数值的平均值。
4.MIN():
o MIN(column_name):出分组中指定列的最小值。
5.MAX():
o MAX(column_name):出分组中指定列的最大值。
6.DISTINCT:
o COUNT(DISTINCT column_name):计算指定列不同值的数量。
7.GROUPING SETS, ROLLUP, CUBE:
o这些是高级分组操作,可以生成交叉分组结果。
o GROUPING SETS (a, b, (a, b), c):为每个指定的集合以及它们的并集分别执行分组聚合。
o ROLLUP (a, b, c):从最细粒度到最粗粒度的所有可能组合进行分组。
o CUBE (a, b, c):包括所有可能的子集分组。
8.其他聚合函数:
o FIRST_VALUE(column_name), LAST_VALUE(column_name):返回指定窗口内第一或最后一个值。
o LEAD/LAG(column_name, offset, default):查看当前行之后/之前的行的某个列值。
o LISTAGG(column_name [, delimiter])或STRING_AGG(column_name, delimiter):将一组值连接成单个字符串,通常按逗号或其他分隔
符分隔。
o其他窗口函数,如TUMBLE(row_time_column, interval):用于时间窗口上的分组。
使用示例(假设有一个订单表Orders):
Sql
1SELECT order_day, product_id, COUNT(*), SUM(order_amount)
2FROM Orders
3GROUP BY TUMBLE(order_timestamp, INTERVAL'1'DAY), product_id;
4
5-- 使用GROUPING SETS
6SELECT order_day, product_id, COUNT(*)
7FROM Orders
8GROUP BY GROUPING SETS ((order_day), (product_id), (order_day, product_id));
请注意,Flink SQL 也支持在聚合查询中使用HAVING子句来过滤满足特定条件的分组结果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。