SQL : GROUP 和 MAX 多列
Posted
技术标签:
【中文标题】SQL : GROUP 和 MAX 多列【英文标题】:SQL : GROUP and MAX multiple columns 【发布时间】:2021-02-02 18:36:52 【问题描述】:我是 SQL 初学者,谁能帮我解决一下 SQL 查询问题?
我的桌子如下所示
PatientID Date Time Temperature
1 1/10/2020 9:15 36.2
1 1/10/2020 20:00 36.5
1 2/10/2020 8:15 36.1
1 2/10/2020 18:20 36.3
2 1/10/2020 9:15 36.7
2 1/10/2020 20:00 37.5
2 2/10/2020 8:15 37.1
2 2/10/2020 18:20 37.6
3 1/10/2020 8:15 36.2
3 2/10/2020 18:20 36.3
如何获取每位患者每天的最高体温:
PatientID Date Temperature
1 1/10/2020 36.5
1 2/10/2020 36.3
2 1/10/2020 37.5
2 2/10/2020 37.6
提前致谢!
【问题讨论】:
请用您正在运行的数据库标记您的问题:mysql、oracle、sqlserver...? 您是否真的将数据和时间存储在两个单独的列中? 【参考方案1】:对于这个数据集,简单的聚合似乎就足够了:
select patientid, date, max(temperature) temperature
from mytable
group by patientid, date
另一方面,如果您要在具有最高日温度的行上显示其他列,则情况不同。你需要一些过滤;一种选择使用窗口函数:
select *
from (
select t.*,
rank() over(partition by patientid, date order by temperature desc)
from mytable t
) t
where rn = 1
【讨论】:
以上是关于SQL : GROUP 和 MAX 多列的主要内容,如果未能解决你的问题,请参考以下文章