根据ID对行进行分组,然后返回每个ID分组的日期最短的行

时间:2013-10-12 03:03:21

标签: sql

假设您有一个包含3列的数据集:ID,user,date。

是否可以根据最小日期过滤数据,即使某些行具有相同的ID?

抱歉,如果问题有点不清楚。希望下面的图片有助于清除事物。

有两条ID = 1的记录,具有不同的用户和日期。我想要检索的是具有ID = 1,USER = A,DATE = 2013-01-20的记录,因为它的日期早于第二条记录的日期(ID = 1,USER = A,DATE = 2013-01 -21)

我希望对ID = 2的三个记录实现相同的效果。所需记录为ID = 2,USER = C,DATE = 2013-10-20

基本上我想按照他们的ID对这些记录进行分组,然后从该分组中获取具有最低日期的记录

data set + intended output

3 个答案:

答案 0 :(得分:3)

SELECT id, user, date
FROM OriginalData od
WHERE date = (SELECT MIN(date) 
              FROM OriginalDate od1 
              WHERE od.id = od1.id)

答案 1 :(得分:0)

Select * from table_name where date in 
( select MIN(date) from table_name)

答案 2 :(得分:0)

您必须在Group By属性上使用Id子句。

使用以下语法

select * from tab1 where (id, date) in (select id, min(date) from tab1 group by(id))