mysql分组查询与列过滤器

时间:2019-04-01 06:43:19

标签: mysql sql

我有一个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的最大重复值。

1 个答案:

答案 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 |