查询以获取最大记录的最大值

时间:2010-09-08 17:40:27

标签: sql aggregate-functions greatest-n-per-group

我有一个包含以下列的表:patient_id,visit_id和visit_date。如何编写查询以获取每位患者最近访问日期的最大值(visit_id)? (同一患者可能在同一天发生几次visit_id)

基本上,我想最终没有重复的患者ID。

感谢。

4 个答案:

答案 0 :(得分:2)

select patient_id, max(t.visit_id) from 
table t inner join ( 
    select patiend_id, max(visit_date) as latest_visit 
    from table 
    group by patient_id
) lv on 
t.patient_id = lv.patientID and t.visit_date = lv.latest_visit
group by t.patient_id

答案 1 :(得分:2)

select t.patient_id, max(t.visit_id)  
  from (select t.patient_id, max(t.visit_date) maxdate
          from table t
         group by t.patient_id) tt, table t
where t.patient_id = tt.patient_id
  and t.visit_date = tt.maxdate
group by t.patient_id 

答案 2 :(得分:0)

只需使用GROUP BY和子选择。

SELECT patient_id, visit_date, max(visit_id)
FROM tbl
JOIN (
  SELECT patient_id, max(visit_date) FROM tbl GROUP by patient_id
) AS t
  USING ( patient_id, visit_date )
GROUP BY patient_id, visit_date

答案 3 :(得分:0)

由于您需要在两列上执行'max',因此您需要的是子查询。我没有测试过以下查询,但它应该是这样的:

SELECT patient_id, MAX(visit_id) AS maxvisit, maxdate
FROM (
    SELECT patient_id, visit_id, MAX(visit_date) AS maxdate
    FROM mytable
    GROUP BY patient_id, visit_id
) t
GROUP BY patient_id, maxdate

希望这有帮助。