Как построить запрос в sql?

Задача: Вывести значения с группировкой по group, где price должна быть максимальной. В добавок этот price может быть максимальным у group одинаковой.
Прошу помочь, т.к. 10 часов поиска по всему интернету не привел ни к чему хорошему. База данных - clickhouse, но это не имеет наверно разницы.
Пример:
id | group | price
--------------------
1 | group1 | 1000
2 | group1 | 1000
3 | group3 | 500
4 | group2 | 600
5 | group2 | 400

Нужно:
id | group | price
--------------------
1 | group1 | 1000
3 | group3 | 500
4 | group2 | 600

Был вариант:
SELECT t1.* FROM table t1, (SELECT group, MAX(price) price FROM table GROUP BY group) t2
WHERE t1.group=t2.group AND t1.price=t2.price

(P.S. подсветку синтаксиса sql не нашел)
Но в моем случае у group1 2 максимальных значения, и выводятся оба. Мне нужна жесткая группировка по group, причем какой id попадет в выборку (1 или 2) разницы не имеет.

Заранее спасибо.
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
@Salexer Автор вопроса
php
В случае с clickhouse отработал верно запрос:
SELECT argMax(id, price), argMax(group, price), max(price ) FROM table GROUP BY group
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы