我对SQL完全不熟悉,并且正在尝试进行一些正在训练我的后端的在职训练练习。
我正在尝试编写一个查询,该查询将查看包含称为CC_To_Dep的分钟的表列,并针对某些桶测量该列:0-30分钟,30-60分钟,1-2小时,超过2小时,然后将数据返回到看起来像这样
Case Count Time
698,523 0-30 Mins
235,888 30-60 Mins
50,853 1-2 Hrs
2,855 Over 2 Hrs
这就是我正在使用的内容,它使用上面的时间段标记每条记录,但它并没有将它们组合在一起。我在最后尝试了一个GROUP BY子句但是然后整个事情都出错了。
SELECT
(CC_To_Dep) as CaseCount
,CASE
WHEN(CC_To_Dep)< 30 THEN '0-30Mins'
WHEN(CC_To_Dep)>= 30 AND (CC_To_Dep)<= 60 THEN '30-60Mins'
WHEN(CC_To_Dep)> 60 AND (CC_To_Dep)<= 120 THEN '1-2Hrs'
ELSE 'Over 2 Hrs'
END as Time
FROM Table1
WHERE YEAR(Arr_date)=2013
感谢任何帮助。我一直在寻找答案,但我很难在其他示例中阅读代码,然后将其应用到我的情况中。我有一天会到那里,但今天不是那一天。
答案 0 :(得分:1)
SELECT
CASE
WHEN(CC_To_Dep)< 30 THEN '0-30Mins'
WHEN(CC_To_Dep)>= 30 AND (CC_To_Dep)<= 60 THEN '30-60Mins'
WHEN(CC_To_Dep)> 60 AND (CC_To_Dep)<= 120 THEN '1-2Hrs'
ELSE 'Over 2 Hrs'
END as Time
, count(*) as caseCount
FROM Table1
WHERE YEAR(Arr_date)=2013
group by
CASE
WHEN(CC_To_Dep)< 30 THEN '0-30Mins'
WHEN(CC_To_Dep)>= 30 AND (CC_To_Dep)<= 60 THEN '30-60Mins'
WHEN(CC_To_Dep)> 60 AND (CC_To_Dep)<= 120 THEN '1-2Hrs'
ELSE 'Over 2 Hrs'
END