SQL. Как выбрать первую строку по конкретному столбцу из группы?
Нужно оставить только первые строки по вхождению занчения city_id Допустим есть следующая таблица table.
| id | city_id | sum |
|---|---|---|
| 1 | 1 | 10 |
| 2 | 1 | 20 |
| 3 | 1 | 30 |
| 4 | 2 | 20 |
| 5 | 2 | 30 |
Ожидаемый результат:
| id | city_id | sum |
|---|---|---|
| 1 | 1 | 10 |
| 4 | 2 | 20 |
Ответы (1 шт):
Автор решения: Vitaliy Zlobin
→ Ссылка
В таких случаях помогают оконные функции, а именно ROW_NUMBER().
Пишу на MS SQL, в других диалектах функция может называться по-другому(не проверял):
SELECT id,
city_id,
"sum"
FROM
(
SELECT id,
city_id,
"sum",
ROW_NUMBER() OVER(PARTITION BY city_id ORDER BY id) AS NUM
FROM TableName
) AS Subquery
WHERE NUM = 1