You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何在不合并原表行的前提下按列分组统计COUNT值

你可以使用窗口函数实现需求,窗口函数不会因为分组合并原表的行,而是会给每个属于同一分组的行都返回对应的聚合结果。

实现代码(支持窗口函数的数据库,如MySQL 8.0+、PostgreSQL、SQL Server等)

SELECT 
  a,
  b,
  COUNT(*) OVER (PARTITION BY a, b) AS `count`
FROM table_1

原理解释

  • PARTITION BY a, b 按a、b两列对数据做分组,和普通GROUP BY的分组逻辑完全一致
  • 窗口函数逐行计算结果,每个行都会得到自己所在分组的统计行数,不会合并相同分组的行,完全匹配你需要的table_2效果

旧版本数据库兼容方案(不支持窗口函数的场景,如MySQL 5.x)

如果你的数据库不支持窗口函数,可以用分组结果和原表关联的方式实现:

SELECT 
  t1.a,
  t1.b,
  t2.`count`
FROM table_1 t1
INNER JOIN (
  SELECT a, b, COUNT(*) AS `count`
  FROM table_1
  GROUP BY a, b
) t2 ON t1.a = t2.a AND t1.b = t2.b

内容的提问来源于stack exchange,提问作者Bowen Peng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:24:03