草庐IT

mysql group by query with column filter

coder 2023-10-05 原文

我有一个 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/

有关mysql group by query with column filter的更多相关文章

随机推荐