小编Luk*_*oni的帖子

PostgreSQL如何获得某些行的平均值

如果标题不是很贴切,我很抱歉,但是我在编写一个简洁的标题时遇到了一些麻烦.无论如何,我有一个表,记录一个人所处的状态.它看起来像:

id, login, state, duration, started_at
1, pdiddy, working, 1200, 2018-05-25 08:30:00
2, pdiddy, lunch, 120, 2018-05-25 9:00:00
3, pdiddy, on_call, 65, 2018-05-25 12:30:00
4, pdiddy, available, 1115, 2018-05-25 12:30:00
5, pdiddy, working, 143, 2018-05-25 12:30:00
6, pdiddy, break1, 150, 2018-05-25 12:30:00
7, pdiddy, working, 2400, 2018-05-25 12:30:00
8, pdiddy, break2, 110, 2018-05-25 12:30:00

我需要为每个用户逐日获得与劳动相关的持续时间的平均值.所以基本上我需要为任何给定日期的"午餐","休息1"和"休息2"之外的所有内容加上持续时间,并得到它的平均值.

我尝试这样做,但问题是它不会在平均之前添加与人工相关的日志.我无法弄清楚如何做到这一点.

SELECT
    log.login,
    AVG(log.duration) FILTER (WHERE log.state NOT IN ('lunch', 'break1', 'break2')) AS "labor_average"
FROM
    log
GROUP BY 1
Run Code Online (Sandbox Code Playgroud)

显然,我不希望任何人为我这样做.我只需指向正确的方向.我显然离解决方案很远,所以我只需要朝着正确的方向努力.非常感谢你提前!

sql postgresql

6
推荐指数
1
解决办法
170
查看次数

标签 统计

postgresql ×1

sql ×1