SQL如何在单元格的值大于0时执行平均值

时间:2015-01-27 23:47:04

标签: sql sql-server

我有一个SQL查询,它给出了两个日期之间的平均午餐时间。

,AVG(DATEDIFF(SECOND, 0,  lunchduration) / (60.0 * 60.0)) as avglunchduration

现在我的平均价值非常低,因为它考虑了值= 0,所以如果员工在一天内没有去吃午饭那么我的平均值就是下...

  

我需要的只是在午餐时间和平均时间内做平均值。 column的值大于0。

有任何线索吗?

2 个答案:

答案 0 :(得分:4)

最简单的方法可能是使用NULLIF()

AVG(NULLIF(DATEDIFF(SECOND, 0,  lunchduration) / (60.0 * 60.0), 0))

如果持续时间为零,则返回NULLAVG()忽略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

其中字段是您想要的字段,表格是字段所在的表格。