как отсортировать таблицу по количеству совпадений
есть sql таблица
date, color, name
01 5 1
05 2 3
02 8 5
04 4 3
07 1 5
06 9 3
как отсортировать по колонке name
по количеству совпадений, что бы строки с "3" была первой
результат
date, color, name
06 9 3
05 2 3
04 4 3
02 8 5
07 1 5
01 5 1
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Добиться такого результата можно с использование окной функции в сортировке
select
date,
color,
name
from table
order by count(*) over (partition by name) desc;
Ниже полный пример для воспроизведения.
Тестировал в PostgreSQl и Oracle
create table www (
a NUMBER, -- int4
b NUMBER, -- int4
c NUMBER -- int4
);
insert into www values (1,2,3);
insert into www VALUES (1,3,4);
insert into www VALUES (2,4,5);
insert into www VALUES (2,4,7);
insert into www VALUES (2,4,8);
insert into www values (3,6,9);
select
a,
b,
c
--count(*) over (partition by a) s
from www
order by count(*) over (partition by a) desc;