我有一个mysql表,其中包含下面提到的C1,C2和C3列的数据。表数据在下文中提及(由于保密,因此为假数据)。我想要一个mysql查询,该查询将按c1降序返回所有C1列顺序的计数(首先获得最大计数C1),该查询具有最大计数desc和C1的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的最大重复值。
答案 0 :(得分:3)
您可以尝试使用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 |