Group By 返回相同行数时出现问题

Group By Having issue returning same number of rows

我想获取最大 last_updated_date 的 ID/行,但查询是 return 相同的行数

    id   |  job_number | last_udated_date
    1407;"88212";"2015-12-16 00:00:00+05:30"
    77;"48439";"2015-12-16 00:00:00+05:30"
    1526;"1484924208";"2017-01-21 00:00:00+05:30"
    1527;"1484924208";"2017-01-21 00:00:00+05:30"
    1528;"1484924208";"2017-01-21 00:00:00+05:30"
    1529;"1484924208";"2017-01-22 07:20:42.586+05:30"

查询应该 return 只有 1407,77, 1529,但现在 return 查询所有值

查询:

select id, last_updated_date 
from brs.events 
where last_updated_date in (select max(last_updated_date) 
                            from brs.events 
                            group by last_updated_date )

您想这样做:

SELECT id,
  last_updated_date
FROM brs.events
WHERE last_updated_date =
  (SELECT MAX(last_updated_date) FROM brs.events
  )

如果您只想根据最新 last_update_date 获取一行,您可以为此使用 LIMIT:

select id
from brs.events
order by last_update_date desc
limit 1;

UPDATE 以获取问题的最新更改:

select
    id,
    last_updated_date
from (
    select
        t.*,
        row_number() over (partition by job_number order by last_updated_date desc) rn
    from your_table t
) t where rn = 1;

如果我理解正确,理想的选择是 DISTINCT ON(),因为它使查询变得非常简单。

SELECT DISTINCT ON ( expression [, ...] ) keeps only the first row of each set of rows where the given expressions evaluate to equal

select distinct on (job_no) id
      ,job_no
      ,max(lpd)
from evnts
group by job_no,id

Demo

此处,Distinct on 将评估每个组中的行(job_number)