最大值(SQL)中的最大值



我有一些类似的数据:

diffdat contract    rank
 22         a765      1
  9         b114      1
 33         b114      2
 78          c72      1

我试图通过合同来获得计数:

  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

最新更新