聚合中的最大值 (sql)
max value in aggregation (sql)
我有一些这样的数据:
diffdat contract rank
22 a765 1
9 b114 1
33 b114 2
78 c72 1
我正在尝试按合同汇总计数:
- 最大等级 = 1 且 diffdat < 30
我应该得到 1 个案例:
diffdat contract rank
22 a765 1
和 2. 最大等级 = 1 和 diffdat > 30
diffdat contract rank
78 c72 1
我一直天真地尝试使用类似
的东西
select count(*) from (
select contract from dat group by contract having max(rank) = 1 and diffdat < 30 ) g
但这似乎不起作用,因为数据未汇总,并且某些情况 (b114) 包含在两个计数中(> 和 < 30)
我该如何解决这个问题?
感谢您的帮助
尝试使用 case when
select contract, sum(case when rank = 1 and diffdat < 30 then 1 else 0 end),
sum( case when rank = 1 and diffdat > 30 then 1 else 0 end)
from dat group by contract
我有一些这样的数据:
diffdat contract rank
22 a765 1
9 b114 1
33 b114 2
78 c72 1
我正在尝试按合同汇总计数:
- 最大等级 = 1 且 diffdat < 30
我应该得到 1 个案例:
diffdat contract rank
22 a765 1
和 2. 最大等级 = 1 和 diffdat > 30
diffdat contract rank
78 c72 1
我一直天真地尝试使用类似
的东西select count(*) from (
select contract from dat group by contract having max(rank) = 1 and diffdat < 30 ) g
但这似乎不起作用,因为数据未汇总,并且某些情况 (b114) 包含在两个计数中(> 和 < 30)
我该如何解决这个问题? 感谢您的帮助
尝试使用 case when
select contract, sum(case when rank = 1 and diffdat < 30 then 1 else 0 end),
sum( case when rank = 1 and diffdat > 30 then 1 else 0 end)
from dat group by contract