我有一些类似的数据:
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)(> and&lt; 30)
我该如何解决?感谢您的任何帮助
在
时使用案例尝试 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