將聚合函數分爲三類,數字,字符串,其他。
1、通用格式
格式:aggregate_function_name( [ALL | DISTINCT] expression )
[within_group_specification]
[filter_clause]
[OVER window_clause]
說明:
aggregate_function_name:聚合函數的名稱
all | distinct exrpession:是否去除重複項,所有的聚合函數都會忽略null,除count(*),
within_group_specification:
filter clause:mysql不支持,等價於having語句。格式爲filter(where condition);
over window_clause: over窗口函數, 簡單格式爲over(partition by column order by desc | asc);
2、數字
select avg(column_name); // 求平均數 select sum(column_name); // 求和 select min(column_name); // 最小值 select sum(column_name); // 最大值 select stddev_pop(column) 或stddev(column); // 計算標準差 select var_pop(column) 或 variance(column) // 計算總體方差(總體標準差的平方) select count(*)或count(column_name); // 統計行數
3、字符串
3.1 group_concat
格式:
group_concat([distinct] expr [order by [asc | desc]] [separator])
描述:將每組內部的數據按照指定的分隔符,排序方式拼接起來。
參數:
distinct:首先將組內部的數據去重
expr:表達式,列名,或者函數返回結果等等
order by asc | desc: 指定排序, 默認值爲asc
separator:分隔符
示例:假設存在兩條(1,a); (1,b), (2,a)4條數據; 以num進行分組
group_concat(str); // 返回(a,a,b); (a) group_concat(str order by desc); // 返回(b,a,a); (a) group_concat(distinct str order by desc); // 返回(b,a); (a) group_concat(str separator ‘-’); // 返回(a-a-b); (a)
4、其他
4.1 grouping
格式:grouping(column)
說明:當使用rollup, cube等類似的關鍵字時,會由系統生成統計行,grouping用於標識該行是否由系統生成,0表示否,1表示是。
示例:
// 消費表,根據日期統計消費總額。
SELECT date, sum( amount ) AS total, grouping ( date ) AS 'grp' FROM consume GROUP BY date WITH ROLLUP