
GROUP BY 语句的用法
在SQL中,GROUP BY 子句用于将结果集中的数据按照一个或多个列进行分组。通常与聚合函数(如 COUNT(), SUM(), AVG(), MAX(), MIN() 等)一起使用,以对每个组执行计算。以下是 GROUP BY 语句的基本用法和一些示例:
基本语法
SELECT column1, column2, ..., AGGREGATE_FUNCTION(column3) FROM table_name WHERE condition GROUP BY column1, column2, ...;- column1, column2, ...:这些是你希望按其分组的列。
- AGGREGATE_FUNCTION(column3):这是应用于每个组的聚合函数。
- table_name:包含数据的表名。
- condition:(可选)用于过滤行的条件。
示例
假设我们有一个名为 sales 的表,结构如下:
+----+-------+--------+------+ | id | item | amount | year | +----+-------+--------+------+ | 1 | apple | 10 | 2021 | | 2 | banana| 15 | 2021 | | 3 | apple | 8 | 2022 | | 4 | orange| 7 | 2022 | | 5 | banana| 20 | 2022 | +----+-------+--------+------+示例1:按年份分组并计算每年的总销售额
SELECT year, SUM(amount) AS total_sales FROM sales GROUP BY year;结果:
+------+-------------+ | year | total_sales | +------+-------------+ | 2021 | 25 | | 2022 | 35 | +------+-------------+示例2:按商品和年份分组并计算每种商品每年的销售数量
SELECT item, year, COUNT(*) AS sales_count FROM sales GROUP BY item, year;结果:
+-------+------+-------------+ | item | year | sales_count | +-------+------+-------------+ | apple | 2021 | 1 | | banana| 2021 | 1 | | apple | 2022 | 1 | | orange| 2022 | 1 | | banana| 2022 | 1 | +-------+------+-------------+示例3:按商品分组并计算平均销售额
SELECT item, AVG(amount) AS average_sale FROM sales GROUP BY item;结果:
+-------+--------------+ | item | average_sale | +-------+--------------+ | apple | 9 | | banana| 17.5 | | orange| 7 | +-------+--------------+注意事项
- 选择列表中的非聚合列:在 SELECT 列表中,除了聚合函数的参数外,所有其他列都必须包含在 GROUP BY 子句中。
- 排序:如果需要按特定顺序显示结果,可以使用 ORDER BY 子句。例如,按总销售额降序排列:SELECT year, SUM(amount) AS total_sales FROM sales GROUP BY year ORDER BY total_sales DESC;
通过合理使用 GROUP BY 子句,你可以有效地对数据进行分组和汇总分析。
