我有一张包含持续时间的表格。 我想添加它们但是当持续时间少于45分钟时返回60分钟。
我的查询没有返回任何内容,就像那样:
SUM(CASE WHEN duration = 45 THEN duration=60 ELSE 0 END) AS t_dur1 ,
SUM(CASE WHEN duration > 45 THEN duration ELSE 0 END) AS t_dur2
有什么想法吗?
答案 0 :(得分:1)
从字面上理解你的逻辑,你只需要一个CASE
语句:
SUM(CASE WHEN duration < 45 THEN 60 ELSE duration END) AS t_dur
计算少于超过45分钟的持续时间为60分钟,否则计算持续时间的原始值。
您可能在GROUP BY
查询中使用此内容,如下所示:
SELECT some_col,
SUM(CASE WHEN duration < 45 THEN 60 ELSE duration END) AS t_dur
FROM yourTable
GROUP BY some_col
答案 1 :(得分:0)
您的逻辑似乎需要使用不同的比较运算符:
SUM(CASE WHEN duration < 45 THEN 60 ELSE 0 END) AS t_dur1 ,
SUM(CASE WHEN duration >= 45 THEN duration ELSE 0 END) AS t_dur2
您的查询
CASE WHEN duration = 45 THEN duration = 60
将始终返回false,实际为0.请注意,例如Postgres会引发错误,如下所示:
CASE类型整数和布尔值不符合
您可能还想将这两个CASE语句合并为一个:
SUM(CASE WHEN duration < 45 THEN 60 ELSE duration END) AS t_dur