在SQL中,GROU BY
语句用于将多行数据根据一个或多个列进行分组,以便可以对每个分组执行聚合函数,如计数、求和、求平均等。以下是一些基本的SQL分组示例。
- 基本分组*
假设你有一个名为orders
的表,其中包含order_id
, customer_id
, order_amount`等列。如果你想知道每个客户的订单总金额,你可以这样写SQL查询:
SELECT customer_id, SUM(order_amoun) a total_aount
FROM orders
GROUPBY customer_id;
在这个查询中,GROUP BY customer_id
将结果集按customer_id
列分组,然后SUM(order_amount)
计算每个分组的订单总金额。
- 多列分组
你也可以按多列进行分组。例如,如果你还想按订单年份分组,你可以添加一个order_year
列,并这样查询:
SELECT customer_id, order_year, SUM(order_amount) as total_amount_per_year
FROM orders
GROUP BY customer_id, order_year;
- 分组后筛选
在分组后,你可能还想对分组结果进行筛选。为此,你可以使用HAVING
子句。例如,如果你只想看到订单总金额超过1000的客户,你可以这样写:
SELECT customer_id, SUM(order_amount) as total_amount
FROM orders
GROUP BY customer_id
HAVING SUM(order_amount) \u003e 1000;
注意,HAVING
子句在GROUP BY
之后、ORDER BY
之前使用,并且它用于筛选分组后的结果,而不是筛选原始数据行(这是WHERE
子句的工作)。
- 分组并排序
最后,你可能还想对分组结果进行排序。为此,你可以使用ORDER BY
子句。例如,如果你想按订单总金额从高到低排序客户,你可以这样写:
```sql
SELECT customer_id, SUM(order_amot) as total_amount
FROM orders
GROUP BY customer_id
ORDER BY total_amount DESC;