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

SQL如何按Column A分组统计Column B各值数量并生成新表

实现方案

核心逻辑

你需要的是典型的行转列统计场景,因为Column B取值固定有限,用条件聚合即可实现,语法兼容绝大多数主流数据库。

统计查询语句(通用版)

SELECT 
  A,
  SUM(CASE WHEN B = 'X' THEN 1 ELSE 0 END) AS X,
  SUM(CASE WHEN B = 'Y' THEN 1 ELSE 0 END) AS Y,
  SUM(CASE WHEN B = 'Z' THEN 1 ELSE 0 END) AS Z
FROM 你的源表名称
GROUP BY A;

用你提供的示例源表执行上述查询,输出结果和你给出的预期效果完全一致。

基于统计结果创建新表

不同数据库的建表语法略有差异:

  • MySQL/PostgreSQL/Oracle 写法:
CREATE TABLE 新表名称 AS
SELECT 
  A,
  SUM(CASE WHEN B = 'X' THEN 1 ELSE 0 END) AS X,
  SUM(CASE WHEN B = 'Y' THEN 1 ELSE 0 END) AS Y,
  SUM(CASE WHEN B = 'Z' THEN 1 ELSE 0 END) AS Z
FROM 你的源表名称
GROUP BY A;
  • SQL Server 写法:
SELECT 
  A,
  SUM(CASE WHEN B = 'X' THEN 1 ELSE 0 END) AS X,
  SUM(CASE WHEN B = 'Y' THEN 1 ELSE 0 END) AS Y,
  SUM(CASE WHEN B = 'Z' THEN 1 ELSE 0 END) AS Z
INTO 新表名称
FROM 你的源表名称
GROUP BY A;

补充说明

如果后续Column B新增了其他分类取值,只需要在SELECT子句中对应新增一行SUM(CASE WHEN B = '新取值' THEN 1 ELSE 0 END) AS 新取值即可。

内容的提问来源于stack exchange,提问作者Prashant Solanki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:03:03