MySQL группы по запросу с фильтром столбца - PullRequest
5 голосов
/ 01 апреля 2019

У меня есть таблица mysql с данными, указанными ниже со столбцами C1, C2 и C3.Данные таблицы упоминаются ниже (фиктивные данные, поскольку конфиденциальные).Я хочу запрос mysql, который будет возвращать счетчик всех порядков столбца C1 по убыванию c1 (чтобы сначала получить максимальное количество C1), который имеет максимальное значение desc и данные C2 C1, которые повторяются максимальное время и то же самое с 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 Ответ

3 голосов
/ 01 апреля 2019

Вы можете попытаться использовать подзапрос 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

Результаты :

| COUNT(*) | C1 | c2 | c3 |
|----------|----|----|----|
|        4 |  Z |  F |  P |
|        3 |  Y |  H |  K |
|        3 |  X |  A |  U |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...