MySQL выборка групп

82
18 января 2022, 04:40

Есть таблица:

Исходные данные:

id;color;price
1;red;25
2;green;85
3;blue;2
4;black;20
5;green;96
6;red;18
7;black;5
8;black;10
9;green;14
10;blue;96
11;red;8
12;green;5
13;blue;14
14;black;26
15;blue;6

каким запросом получить по два минимальных значения каждого цвета? Ожидаемый результат запроса:

Именно одним запросом хочется получить такой результат.

Answer 1

Попробуйте вот такой вариант

select id, color, price
from colors
where price = (select min(price) from colors as X where X.color=colors.color)
or price=(select min(price) from colors as X where X.color=colors.color 
and price > (select min(price) from colors as Y where Y.color=colors.color))
order by color, price;

Или с меньшим числом подзапросов

select id, color, price
from colors
where (
   select count(*) from colors as X
   where X.color = colors.color and X.price <= colors.price
) <= 2
order by color, price;
READ ALSO
Помогите с запросом SQL на выборку данных

Помогите с запросом SQL на выборку данных

Подскажите как написать запрос, для вывода трех наиболее оплачиваемых сотрудника предприятияНазвания полей и таблиц произвольное, мне нужно...

71
Как связать данные в Laravel?

Как связать данные в Laravel?

Как связать данные в Laravel? Есть 3 таблицы:

76
Вывод определённых данных из строки при помощи RedBean

Вывод определённых данных из строки при помощи RedBean

Как при помощи ORM RedBean вывести определённые данные? У меня есть таблица, которая называется "users", в ней есть 3 столбца: "id", "steamid" и "balance" Первая...

70
Сумма сумм MYSQL

Сумма сумм MYSQL

Как посчитать сумму сумм в mysql? Те у меня есть запрос

173