【问题标题】:mysql count latest record from 2 tablesmysql从2个表中计算最新记录
【发布时间】:2022-01-29 15:25:42
【问题描述】:

我有两张桌子

patient
id name room
1 Adam A
2 Ben B
3 Charles A
4 David C
5 Eugen B

和表check

id id_patient check_date condition
1 1 2021-11-11 bad
2 2 2021-11-12 good
3 1 2021-11-17 good
4 3 2021-11-17 poor
5 4 2021-11-18 bad
6 5 2021-11-18 bad
7 3 2021-12-20 poor
8 4 2021-12-20 bad
9 5 2021-12-21 bad
7 1 2021-12-22 bad
8 2 2021-12-22 poor
9 3 2021-12-23 good

如何从最新的病情检查日期记录中按房间计数病人..需要这样的结果:

room bad good poor
A 1 1 0
B 1 0 1
C 1 0 0

【问题讨论】:

  • 试着解释你想要的结果,很难理解你想说什么!
  • 需要从最新的检查结果记录中按房间计数。我需要第三张桌子这样的结果
  • 哪个版本的 MySQL?

标签: mysql


【解决方案1】:

这应该可以工作

select room, 
       sum(case when result = "bad" then 1 else 0 end) as bad,
       sum(case when result = "good" then 1 else 0 end) as good,
       sum(case when result = "poor" then 1 else 0 end) as poor
from 
    (select c3.id, patient, room, checkdate, result 
     from checks c3
     inner join patients pt on pt.id = c3.patient
     where c3.id in
         (select id
          from checks c1
          where patient = c3.patient and 
                          (select max(checkdate) 
                           from checks c2  
                           where c2.patient = c1.patient) = checkdate)) ch

group by room

https://www.db-fiddle.com/f/irBJY8JwxPygQZj7LYPofv/4

【讨论】:

    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多