我有一个 mysql 表,其中包含下面提到的 C1、C2 和 C3 列数据。表格数据如下(保密的虚拟数据)。我想要一个 mysql 查询,它将按 c1 降序返回所有 C1 列的计数(首先获得最大计数 C1),其中 C1 的最大计数 desc 和 C2 数据重复了最大次数,与 C3 相同。
C1 C2 C3
X A U
X A U
X B V
Y H K
Y H K
Y H K
Z F R
Z F P
Z G P
Z F R
输出应采用以下格式。
Count C1 C2 C3
4 Z F P
3 Y H K
3 X A U
我能够在同一查询中获取计数,但不能获取 C2、C3 的最大重复值。
最佳答案
你可以尝试使用select子查询来实现。
查询 1:
SELECT
COUNT(*),
C1,
(SELECT tt.C2 FROM T tt WHERE t1.C1 = tt.C1 GROUP BY tt.C2 ORDER BY COUNT(*) DESC,tt.C2 LIMIT 1) c2,
(SELECT tt.C3 FROM T tt WHERE t1.C1 = tt.C1 GROUP BY tt.C3 ORDER BY COUNT(*) DESC,tt.C3 LIMIT 1) c3
FROM T t1
GROUP BY C1
ORDER BY COUNT(*) desc,C1 desc
Results :
| COUNT(*) | C1 | c2 | c3 |
|----------|----|----|----|
| 4 | Z | F | P |
| 3 | Y | H | K |
| 3 | X | A | U |
关于mysql group by query with column filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55449349/