我有一个SQL查询,它给出了两个日期之间的平均午餐时间。
,AVG(DATEDIFF(SECOND, 0, lunchduration) / (60.0 * 60.0)) as avglunchduration
现在我的平均价值非常低,因为它考虑了值= 0,所以如果员工在一天内没有去吃午饭那么我的平均值就是下...
我需要的只是在午餐时间和平均时间内做平均值。 column的值大于0。
有任何线索吗?
答案 0 :(得分:4)
最简单的方法可能是使用NULLIF()
:
AVG(NULLIF(DATEDIFF(SECOND, 0, lunchduration) / (60.0 * 60.0), 0))
如果持续时间为零,则返回NULL
,AVG()
忽略NULL值。
更明确的case
语句更具概括性:
AVG(CASE WHEN DATEDIFF(SECOND, 0, lunchduration) > 0
THEN DATEDIFF(SECOND, 0, lunchduration) / (60.0 * 60.0)
END)
答案 1 :(得分:0)
SELECT AVG(fields)
FROM tables
WHERE lunchduration > 0
其中字段是您想要的字段,表格是字段所在的表格。