使用WHERE IN子句

时间:2017-12-29 11:16:30

标签: sql postgresql

这可能很简单,但我是SQL的新手,无法找到如何做到这一点。

我有以下表格:

Existing table in SQL

我的要求如下:

对于每个频率,我需要每个频率,我需要最新的日期和时间。最新日期的最大版本。 例如:Dim'A'和&频率'每月'及其最新日期&最新日期的最高版本。昏暗的'A'和&频率'Weekly'及其最新日期&最新日期的最高版本。

有人可以帮帮我吗?

我尝试使用以下查询,但没有返回正确的值:

SELECT Dim, Frequency, Date, Version
               FROM   sample_tbl 
               WHERE  ( Frequency, Date, 
                        Version ) IN ( 
select Frequency, max(Date), max(Version)
from sample_tbl
group by 1
);

1 个答案:

答案 0 :(得分:1)

我Postgres,我认为distinct on能做你想做的事:

select distinct on (dim, frequency) s.*
from sample_tbl s
order by dim, frequency, date desc, version desc;

对于每个dim / frequency组合,这将返回一行。该行是基于order by子句遇到的第一行。