SQL 分组查询如何统计每组记录数?

使用COUNT函数结合GROUP BY可统计每组记录数,如SELECT customer_id, COUNT() AS order_count FROM orders GROUP BY customer_id,按客户分组并计算各客户订单数量,注意COUNT()统计所有行,且SELECT中非聚合字段需与GROUP BY列一致。

在 SQL 中进行分组查询时,如果想统计每组的记录数,可以使用 COUNT() 函数结合 GROUP BY 子句来实现。

基本语法

SELECT 列名, COUNT(*) AS 记录数
FROM 表名
GROUP BY 分组列名;

这条语句会按照指定列对数据进行分组,并统计每一组中有多少条记录。

实际示例

假设有一张订单表 orders,包含以下字段:

  • order_id
  • customer_id
  • order_date

如果你想统计每个客户的订单数量,可以这样写:

SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id;

结果会列出每个 customer_id 及其对应的订单条数。

注意事项

使用 COUNT() 时可以根据需要选择不同的形式:

  • COUNT(*):统计所有行,包括 NULL 值
  • COUNT(列名):只统计该列非 NULL 的行数

确保 GROUP BY 后面的列与 SELECT 中非聚合字段保持一致,避免出现语法错误或逻辑异常。

基本上就这些,不复杂但容易忽略细节。