Сортировать таблицу, но хранить группы строк вместе - PullRequest
1 голос
/ 13 марта 2020

Как отсортировать таблицу по ее минимальному значению на группу, но в то же время сохранить группу строк вместе. Ниже приведен простой пример того, что я пытаюсь сделать sh. Таблица отсортирована по наименьшему значению группы, но группа остается вместе. Я почти уверен, что этот вопрос уже задавался, но я не смог найти ответ.

+---------+-------+
|  Group  | value |
+---------+-------+
|    1    |  3.99 |
|    1    | 10.99 |
|    3    | 12.69 |
|    1    | 20.95 |
|    2    | 19.95 |
|    3    | 10.09 |
+---------+-------+

Желаемый результат

+---------+-------+
|  Group  | value |
+---------+-------+
|    1    |  3.99 |
|    1    | 10.99 |
|    1    | 20.95 |
|    3    | 10.69 |
|    3    | 12.09 |
|    2    | 19.95 |
+---------+-------+

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

Если вы используете MySQL 8.0, вы можете сортировать с помощью оконных функций:

select t.*
from mytable t
order by min(value) over(partition by grp), value

В более ранних версиях одним из вариантов является присоединение к агрегированному подзапросу:

select t.*
from mytable t
inner join (
    select grp, min(value) min_value from mytable group by grp
) m on m.grp = t.grp
order by m.min_value, t.value
0 голосов
/ 13 марта 2020

SELECT *, RN = ROW_NUMBER () ПЕРЕВЕРНУТЬСЯ (РАЗДЕЛЕНИЕ ПО ИДЕНТИФИКАТОРУ, ПОКАЗАТЬ ПО ЗНАЧЕНИЮ, ИД.) ОТ ТЕМП.

...