我有两个表格Job Category
,其结构为| id | name |
,另一个表格jobs
的结构为| id | job_name | job_category |
如何计算每个类别中的工作数量?
答案 0 :(得分:2)
select c.name, count(j.id)
from job_category c
left join jobs j on j.job_category = c.name
group by c.name
答案 1 :(得分:1)
为什么你需要加入?不是吗
select job_category, count(*)
from jobs
group by job_category
如果没有,请发布您自己的查询(可能还有一些可能有助于我们帮助您的样本数据)。
[编辑,阅读评论后]
似乎我的(过度)简化"解决方案"缺乏一些细节。是的,它显示没有工作的类别,而OP要求那些也应显示为" 0"结果是。
具有适当COUNT函数的外部联接可以解决这个问题;这是一个例子。
SQL> with job_category(id, name) as
2 (select 1, 'categ 1' from dual union
3 select 2, 'categ 2' from dual
4 ),
5 job (id, job_name, job_category) as
6 (select 100, 'job 1', 1 from dual union
7 select 200, 'job 2', 1 from dual
8 )
9 select c.name, count(j.id)
10 from job_category c left join job j on j.job_category = c.id
11 group by c.name
12 order by c.name;
NAME COUNT(J.ID)
------- -----------
categ 1 2
categ 2 0
SQL>
答案 2 :(得分:1)
您可以使用左连接(请参阅其他答案)或使用子查询来执行此操作:
SELECT
c.Name
, (SELECT COUNT(*) FROM jobs j WHERE j.category_id=c.id) AS Count
FROM job_category c