Sqlite3检索特定ID和DEPT的最早和最新记录

时间:2016-09-12 12:18:27

标签: sql sqlite

如何通过ID从表组中检索第一个和最后一个更新记录,其中最新更新记录是DEPT Sales。

 ID     DEPT        DATETIME         
=====================================     
1       Account  2016:09:01 14:11:44 
1       Account  2016:09:01 15:12:50 
1       Account  2016:09:01 16:11:33 
1       Sales    2016:09:01 18:19:34 
1       Sales    2016:09:01 18:28:50 
1       Sales    2016:09:01 18:35:22     
2       HR       2016:09:01 18:25:50  
2       Sales    2016:09:01 18:26:10  
2       Sales    2016:09:01 18:34:44     
3       HR       2016:09:01 18:27:50  
3       Sales    2016:09:01 18:28:40  
3       Sales    2016:09:01 18:35:22      
4       HR       2016:09:01 18:27:50  
4       Sales    2016:09:01 18:28:40  
4       Admin    2016:09:01 18:35:22 

预期输出

 ID     DEPT        DATETIME         
=====================================     
1       Account  2016:09:01 14:11:44 
1       Sales    2016:09:01 18:35:22 
2       HR      2016:09:01 18:25:50  
2       Sales   2016:09:01 18:34:44  
3       HR      2016:09:01 18:27:50  
3       Sales   2016:09:01 18:35:22  

2 个答案:

答案 0 :(得分:0)

这是一种方法:

select t.*
from t join
     (select id, min(datetime) as mindt, max(datetime) as maxdt
      from t
      group by id
     ) tt
     on t.id = tt.id and
        t.datetime in (tt.mindt, tt.maxdt);

答案 1 :(得分:0)

假设id可能有2个以上的部门,而min必须来自除了' Sales'之外的所有部门。 DEPT,试试

select id 
      ,(select min(DEPT)
        from table t2 
        where t2.id = t.id and t2.datetime = t.mindt) as DEPT
      ,mindt as datetime
from (
    select id, min(datetime) as mindt
    from table 
    where DEPT !='Sales'
    group by id) t
UNION ALL
select id, DEPT, max(datetime) 
from table 
where DEPT ='Sales'
group by id, DEPT