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

基于MySQL两列唯一分组统计数据生成饼图的SQL查询问题

问题描述

现有一个MySQL表table_one,包含Column A和Column B两列,需要基于这两列的唯一组合分组统计数据(用于生成饼图)。表中原始数据如下:

Column AColumn B
A1User1
A1User1
B1User1
C1User2
C1User3
D1User1
C1User1
A1User1
C1User1

尝试执行了以下SQL查询:

SELECT  a.`columnA`,a.`columnB`
FROM `table_one` a
GROUP BY  a.`columnA`, a.`columnB`;

但未得到预期结果,预期输出是按Column B分组,统计对应唯一(Column A, Column B)组合的数量,结果如下:

ColumnBCount
User14
User21
User31

请提供正确的SQL查询语句。


正确SQL语句

要实现需求,有两种简洁高效的写法:

方法1:子查询先去重再分组统计

SELECT columnB, COUNT(*) AS Count
FROM (
    SELECT DISTINCT columnA, columnB
    FROM table_one
) AS unique_pairs
GROUP BY columnB;

方法2:直接使用COUNT(DISTINCT)统计

SELECT columnB, COUNT(DISTINCT columnA) AS Count
FROM table_one
GROUP BY columnB;

说明
  • 方法1通过子查询先提取所有唯一的(columnA, columnB)组合,再外层按columnB分组计数,逻辑直观,适合需要单独查看唯一组合的场景。
  • 方法2利用COUNT(DISTINCT columnA)直接在分组时统计每个columnB对应的不同columnA数量,代码更简洁,执行效率更高。

两种方法均可得到预期结果,可根据实际场景选择。

内容的提问来源于stack exchange,提问作者Shubhangi Seth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:14:57