Postgres получает первый элемент группы - PullRequest
0 голосов
/ 18 ноября 2018

Я видел похожие вопросы к этому, но, похоже, ни один из них не совсем соответствует запросу, который я пытаюсь построить.

У меня есть база данных журналов запросов к серверу, которая включает входящие и исходящие соединения, и я пытаюсь получить первый элемент в журнале для каждого запроса.

База данных выглядит примерно так: id, requesttid, отметка времени, сообщение

Я хочу сгруппировать по requesttid, но получить наименьший идентификатор из каждого requesttid, который будет первым элементом журнала для запроса.

Я нашел похожие запросы на группировку по requesttid, а затем по ordertid, но это не дает того, что я хочу. Я попытался добавить orderby requesttid, id, но это также дает id 2 в качестве первого возвращаемого элемента.

Это самое близкое, что я пришел: выберите id, requesttid из журналов, где id in (выберите отличный по (requesttid) id из (выберите id, requesttid из порядка журналов по идентификатору) как foo) порядок по пределу идентификатора 5; но первый возвращенный элемент - это идентификатор 2, а не идентификатор 1.

Любые советы для этого были бы очень полезны, спасибо.

1 Ответ

0 голосов
/ 18 ноября 2018

вы можете использовать внутреннее объединение в группе по идентификатору запроса

select  id, requestid, timestamp, message
from logs 
inner join  (
    select min(id) as min_id , requestid 
    from logs 
    group by requestid
) t on t.min_id = logs.id and t.requestid = logs.requestid
...