Запрос с предложением Group By - PullRequest
0 голосов
/ 05 марта 2019

В моей таблице есть поля last_updated_date, департамент и некоторые другие. Я хочу написать запрос, чтобы получить все столбцы в самом верхнем из последних отделов last_updated_row.Я пытался написать с помощью предложения group by, я не получаю все строки.

   id   name    department      last_updated_date
    1   Manu    Maths       22/01/2019
    2   Anil    Maths       23/01/2019
    3   Kala    Maths       24/01/2019

    4   Deepak  Science     22/02/2019
    5   Krish   Science     23/02/2019
    6   Kannan  Science     24/02/2019

    7   Sai     English     02/12/2018
    8   Sunil   English     03/12/2018
    9   Mala    English     04/12/2018
    10  Kola    English     04/12/2018

Я хочу вернуть

    3   Kala    Maths       24/01/2019
    6   Kannan  Science     24/02/2019
    9   Mala    English     04/12/2018
or
    10  Kola    English     04/12/2018

Если два last_updated_date совпадают, запрос долженполучить любой из last_updated_date.

Здесь я использую метку времени для поля даты.так что моя last_modified_date выглядит как 2019-02-07 17: 26: 49.209

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

В Postgres этот тип запроса обычно наиболее эффективен с использованием distinct on ()

select distinct on (department) * 
from the_table
order by department, last_updated desc;
0 голосов
/ 05 марта 2019

используйте row_number()

select * from
(
select *,row_number() over(partition by department order by last_updated_date desc) as rn from tablename
)A where rn=1

или вы можете использовать коррелированный подзапрос

select * from tablename a 
  where last_updated_date in (select max(last_updated_date) from tablenamae b where a.department=b.department)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...