Group By 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。以下是GROUP BY子句的语法:
SELECT
select_list
FROM
table_name
GROUP BY
column_name1, column_name2 ,…;
在此查询语法中, GROUP BY子句为列中的每个值组合生成一个组。 请考虑以下示例:
SELECT
customer_id,
YEAR (order_date) order_year
FROM
sales.orders
WHERE
customer_id IN (1, 2)
ORDER BY
customer_id;
在查询中添加一个 GROUP BY 子句来查看效果:
SELECT
customer_id,
YEAR (order_date) order_year
FROM
sales.orders
WHERE
customer_id IN (1, 2)
GROUP BY
customer_id,
YEAR (order_date)
ORDER BY
customer_id;
GROUP BY子句和聚合函数
GROUP BY子句通常与聚合函数一起用于统计数据。 聚合函数对组执行计算并返回每个组的唯一值。 例如, COUNT()函数返回每个组中的行数。 其他常用的聚合函数是: SUM(),AVG(), MIN(),MAX()。GROUP BY 子句将行排列成组,聚合函数返回每个组的统计量(总数量,最小值,最大值,平均值,总和等)。
例如,以下查询返回客户按年度下达的订单数:
SELECT
customer_id,
YEAR (order_date) order_year,
COUNT (order_id) 订单数量
FROM
sales.orders
WHERE
customer_id IN (1, 2)
GROUP BY
customer_id,
YEAR (order_date)
ORDER BY
customer_id;
如果要引用GROUP BY子句中未列出的任何列或表达式,则必须使用该列作为聚合函数的输入。否则,数据库系统将会提示错误,因为无法保证列或表达式将为每个组返回单个值。