使用 GROUP BY 子句进行分组查询时,可以使用聚合函数 (如 COUNT、SUM、AVG 等) 统计每个分组的数据。但是如果需要查看每个分组的完整数据,则可以使用以下方法:
- 使用子查询
例如,假设有一个 orders 表,包含了订单号、商品名称和销售额等字段,现在需要按照商品名称分组并统计每个商品的销售额总额,同时还要查看每个商品的所有订单记录。可以使用以下 SQL 语句:
SELECT * FROM orders WHERE 商品名称 IN (
SELECT 商品名称 FROM orders GROUP BY 商品名称
) ORDER BY 商品名称;
其中,内层的子查询用于获取所有的商品名称,外层的查询则根据商品名称过滤出所有的订单记录,最后按照商品名称排序。
- 使用窗口函数
MySQL 8.0 开始支持窗口函数,可以方便地对分组数据进行统计和排名等操作。例如,要查看每个商品的所有订单记录,并在结果中添加一列表示该商品的销售额总额,可以使用以下 SQL 语句:
SELECT *,
SUM(销售额) OVER (PARTITION BY 商品名称) AS 销售额总额
FROM orders ORDER BY 商品名称;
其中,OVER 子句指定了基于商品名称分组的 SUM 聚合函数,可以在查询结果中为每个订单记录添加一列表示该商品的销售额总额。