我是新的SQL和循环特别需要一些帮助解决以下问题.
我有这样一张桌子:
SpotID EventID MaxTemp
123 1 45
236 1 109
69 1 18
123 2 216
236 2 29
69 2 84
123 3 91
236 3 457
69 3 280
Run Code Online (Sandbox Code Playgroud)
我想生成一个具有以下输出的新表:
SpotID Over30 Over70 Over100
123 3 2 1
236 2 2 2
69 2 2 1
Run Code Online (Sandbox Code Playgroud)
所以我所追求的是对于不同的EventID,温度超过每个SpotID的30,70和100的限制的次数.
有没有办法用循环来做到这一点?我的数据集显然更大,我很好奇我是否可以使用有效的东西.
非常感谢你.
麦克风
你只需要条件聚合:
select spotid,
sum(case when maxtemp > 30 then 1 else 0 end) as over_30,
sum(case when maxtemp > 70 then 1 else 0 end) as over_70
sum(case when maxtemp > 100 then 1 else 0 end) as over_100
from likethis
group by spotid;
Run Code Online (Sandbox Code Playgroud)