gpt4 book ai didi

sql - 按小时间隔计数

转载 作者:行者123 更新时间:2023-11-29 14:32:36 26 4
gpt4 key购买 nike

我在 postgresql 中编写了一个 SQL 查询,它运行良好,它让我得到每个员工每小时完成的工作量

SELECT COUNT(work_done) AS count, EXTRACT(hour from start_time) AS hour
FROM c_call
WHERE start_time >= '2018-10-13 00:00:00'
GROUP BY employee_id;

如果某个员工每隔一个小时都处于事件状态,但当一个小时没有员工的数据时,它就会被忽略,这是完美的。如果员工在那个时间不工作,如何让它工作,以便结果包含每个时间间隔的一行,并且值字段设置为零。

最佳答案

您可以使用 generate_series 生成小时序列功能:

SELECT * FROM generate_series(0, 23) AS foo(bar)

然后用它来填补小时空缺:

WITH employee_call AS (
SELECT
COUNT(work_done) AS count,
EXTRACT(hour from start_time) AS hour_fraction
FROM
c_call
WHERE
start_time >= '2018-10-13 00:00:00'
GROUP BY
employee_id
), hour_series (hour_fraction) AS (
SELECT generate_series(0, 23)
)
SELECT
COALESCE(c.count, 0) AS count,
COALESCE(c.hour_fraction, h.hour_fraction) AS hour_fraction
FROM
hour_series h
LEFT JOIN employee_call c ON (c.hour_fraction = h.hour_fraction)

关于sql - 按小时间隔计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com