@TheLostRoot
C# ASP.NET developer

Выбрать первую и последнюю запись группы?

Есть таблица с такой структурой
ticket_number       |   some_id
99                  |     55551
99                  |     56447
99                  |     79857
74                  |     84892
74                  |     78141
74                  |     12569


Есть группы записей с одинаковым ticket_number
Нужно из каждой такой группы извлечь первую и последнюю запись

Как это можно написать используя только селекты не обрабатывая это в приложении?
  • Вопрос задан
  • 4352 просмотра
Решения вопроса 1
k1lex
@k1lex
Программист торг. сети. C# (WPF, WinForms), T-SQL
Не работал с PostgreSQL, но чисто на знании MS SQL могу предложить такой вариант
SELECT ticket_number, some_id 
FROM (
SELECT ticket_number, some_id,
 rank() OVER (PARTITION BY ticket_number ORDER BY some_id DESC) RnkDESK,
 rank() OVER (PARTITION BY ticket_number ORDER BY some_id ASC) RnkASC
FROM table ) x
WHERE X.RnkDESK = 1 OR X.RnkASC = 1
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
В смысле вот так?
select ticket_number , min(some_id), max(some_id) from tablename group by ticket_number
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы