group by语句的用法

group by语句的用法

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 | +-------+--------------+

注意事项

  1. 选择列表中的非聚合列:在 SELECT 列表中,除了聚合函数的参数外,所有其他列都必须包含在 GROUP BY 子句中。
  2. 排序:如果需要按特定顺序显示结果,可以使用 ORDER BY 子句。例如,按总销售额降序排列:SELECT year, SUM(amount) AS total_sales FROM sales GROUP BY year ORDER BY total_sales DESC;

通过合理使用 GROUP BY 子句,你可以有效地对数据进行分组和汇总分析。