【问题标题】:I am trying to do counts on multiple conditions and get them back as separate columns我正在尝试对多个条件进行计数并将它们作为单独的列返回
【发布时间】:2021-05-06 01:00:42
【问题描述】:
SELECT * FROM
(SELECT COUNT("user_job".id) FROM "user_job" WHERE "user".job_title = 'Welder / Fitter') AS 
"WelderFitters"  
(SELECT COUNT("user_job".id)  AS "Welders"  FROM "user_job" WHERE "user".job_title = 
'Welder')
(SELECT COUNT("user_job".id)  AS "Fitters"  FROM "user_job" WHERE "user".job_title = 
'Fitter')
(SELECT COUNT("user_job".id)  AS "Helpers"  FROM "user_job" WHERE "user".job_title = 
'Helper')
JOIN "user" ON "user".id = "user_job".user_id 
JOIN "job" ON "job".id = "user_job".job_id
WHERE "job".id = 22;

//涉及两个连接。这根本不起作用,但我认为它说明了我正在尝试做的事情。

【问题讨论】:

  • 听起来你可以使用GROUP BY "user".job_title

标签: sql postgresql join count


【解决方案1】:

我认为您需要条件聚合。您的示例查询建议如下:

SELECT COUNT(*) FILTER (WHERE u.job_title = 'Welder / Fitter') AS 
"WelderFitters",
       COUNT(*) FILTER (WHERE u.job_title = 'Welder') AS 
"Welders",
       COUNT(*) FILTER (WHERE u.job_title =  'Fitter') AS "Fitters",
       COUNT(*) FILTER (WHERE u.job_title =  'Helper') AS "Helpers"
FROM "user" u JOIN
     "user_job" uj
     ON u.id = uj.user_id JOIN
     "job" j
     ON j.id = uj.job_id
WHERE j.id = 2;

但是,我不确定job_title 是否真的在users 表中。它似乎更有可能在jobs 表中。

【讨论】:

  • 在 users 表中,非常感谢
猜你喜欢
  • 2017-02-15
  • 1970-01-01
  • 2022-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 2016-12-01
  • 1970-01-01
相关资源
最近更新 更多