Порядок по максимальному значению в группе - PullRequest
0 голосов
/ 28 сентября 2018

у меня есть это

Name   | Team     | Value
-------|----------|--------
A      | RED      |1
B      | BLUE     |2
C      | RED      |3
D      | BLUE     |4
E      | BLUE     |5

мне это нужно: команда с более высоким максимальным значением показала первой

Name   | Team     | Value
-------|----------|--------
B      | BLUE     |2
D      | BLUE     |4
E      | BLUE     |5
A      | RED      |1
C      | RED      |3

1 Ответ

0 голосов
/ 28 сентября 2018
  • Сначала найдите «Ранг» (максимальное значение) для каждой группы Team в производной таблице t2.
  • Присоединитесь к этомупроизводная таблица с таблицей на основе Team.
  • Теперь сортируйте результаты по «Рангу» в порядке убывания и Name в порядке возрастания.Чтобы строки Команды с наибольшим максимальным значением были на первом месте, отсортированные по их Name внутри самих себя.

Вы можете попробовать следующий запрос (замените your_table своим реальным именем таблицы):

SELECT t1.Name, 
       t1.Team, 
       t1.Value 
FROM your_table AS t1 
JOIN 
(
  SELECT t2.Team, 
         MAX(t2.Value) AS rank 
  FROM your_table AS t2 
  GROUP BY t2.Team 
) AS t2 ON t2.Team = t1.Team 
ORDER BY t2.rank DESC, t1.Name ASC 
...