如何在sql中统计特定工作卡的打开作业数和关闭作业数?

mzillmmw  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(349)

要求计算应用程序中“技术人员”的“开放作业”和“关闭作业”的数量。
如果“status”字段为“pending”或“work started”,则作业处于打开状态,否则作业状态为关闭
我使用一个sql脚本来计算打开的作业和关闭的作业的数量,我的问题是我不能让它计算一个特定的技术人员id。
下面是我计算打开作业的sql脚本:

select count(*)
from jobcard
  left join "user" on "user"."_id_" = jobcard.technicians_fk
where jobcard.status = "Pending"

但问题是我只想计算一个特定的用户id

uklbhaso

uklbhaso1#

我会在这里使用条件聚合:

SELECT
    u."_id_",
    COUNT(*) FILTER (WHERE jc.status IN ('pending', 'word started')) AS open_cnt,
    COUNT(*) FILTER (WHERE jc.status NOT IN ('pending', 'word started')) AS closed_cnt
FROM "user" u
LEFT JOIN jobcard jc
    ON u."_id_" = jc.technicians_fk
GROUP BY
    u."_id_";

我不知道java与这个问题有什么关系,但是您不能使用上面类似jpa或hibernate的确切语法。您可能需要考虑对这个特定问题使用原始查询。

相关问题