sql - SQL查询基于其他列的最大值
问题描述
我想要每个预订中的最高排名以及随着时间的推移的特许经营权。关于如何查询这个的任何想法?
id reservation date franch rank
1 1 6/1/2017 1 234
2 1 6/1/2017 1 465
3 1 6/1/2017 1 851
4 1 6/1/2017 1 956
1 1 6/2/2017 2 658
2 1 6/2/2017 2 578
3 1 6/2/2017 2 578
4 1 6/2/2017 2 954
5 2 6/1/2017 1 436
6 2 6/1/2017 1 645
7 2 6/1/2017 1 854
8 2 6/1/2017 1 145
5 2 6/2/2017 3 98
6 2 6/2/2017 3 345
7 2 6/2/2017 3 867
8 2 6/2/2017 3 909
输出应该像...但请注意,我也希望不返回多个记录,例如 578 用于 17 年 6 月 2 日的预订 1 和特许经营 2。
id reservation date franch rank
4 1 6/1/2017 1 956
2 1 6/2/2017 2 578
3 1 6/2/2017 2 578
7 2 6/1/2017 1 854
8 2 6/2/2017 3 909
解决方案
你可以使用QUALIFY
:
SELECT *
FROM tab
QUALIFY RANK() OVER(PARTITION BY reservation,date,franch ORDER BY rank DESC) = 1