首页 > 解决方案 > SQL 条件计数

问题描述

我正在使用包含有关火车延误信息的数据集。数据集包含到达延迟列和离开延迟列。每个延迟列以分钟为单位。我需要计算一周中每一天的总延误次数,以确定哪一天的火车延误最多。如果延迟等于或大于 1 分钟,则需要计为延迟。如何在 SQL 中完成此操作?我已经尝试了以下代码。

select dayofweek
count(case when arrivaldelay>=1 then 1 end)+
count(case when departuredelay>=1 then 1 end)
group by dayofweek;

dayofweek  arrivaldelay   departuredelay
 2             12              5
 4             7               10
 4             6               -3
 6             5                4

dayofweek    delays
  2            1
  4            1
  6            1

标签: sqlconditional-statements

解决方案


你可以sum()这样使用:

select dayofweek
       ( sum(case when arrivaldelay >= 1 then 1 else 0 end)+
         sum(case when departuredelay >= 1 then 1 else 0 end)
       )
from t
group by dayofweek;

推荐阅读