将列值转换为基于行对出现次数进行计数的列

时间:2019-07-08 14:21:48

标签: sql postgresql

我有一个表,其中一列存储job_name,另一列存储resolved_by。解析程序可以多次解决相同的问题。我想输出一张表,该表计算每个解析器解决问题的次数,即使他们从未解决过一次(在这种情况下应该为0)。这是我当前的表。

Current Table

现在,我已经尝试了一个双重小组,以计算每个人已经解决了他们已经解决的特定问题的次数,但这并不表示一个人没有解决问题。

SELECT job_name, resolved_by, COUNT(*) FROM tb GROUP BY job_name, resolved_by ORDER BY job_name, resolved_by;

Double Group by

我正在寻找一个以resolved_by作为列,每个job_name作为列的表,其中每个人解决'job_name'的次数填充了多少,其中包括零他们没有解析该特定的“ job_name”或类似于我尝试过的表,除了它还包含每个人都没有解决的工作(计数为0)。

所需表:

Desired Table

1 个答案:

答案 0 :(得分:0)

您需要从名单上开始。所以,像这样:

SELECT p.person_id, COUNT(tb.resolved_by)
FROM people p LEFT JOIN
     tb
     ON p.person_id = tb.resolved_by
GROUP BY p.person_id;