SQLITE根据事件ID计算作业注册

问题描述 投票:1回答:1

我在计数查询时遇到问题,我已经被困在这几个小时了...

所以我有3个表:

job - id,name

事件 - 身份证,姓名,日期

注册 - id,event_id,name,job_id

我想计算每个事件中每个作业有多少注册,即使是空的,我也不需要过滤事件,因为不会有很多,我只有15个工作。

我想要这样的东西:

event_id - job - count

1 - carpenter - 10
1 - miner - 0
1 - farmer - 3
2 - carpenter - 3
2 - miner - 4
2 - farmer - 0

就我而言:

SELECT signup.event_id, job.name AS "job", COUNT(*) AS "cnt"
FROM job
LEFT OUTER JOIN signup ON job.id = signup.job_id
GROUP BY job.name, signup.event_id
ORDER BY signup.event_id

返回这样的东西:

event_id - job - count

NULL - farmer - 0
NULL - miner - 0
1 - carpenter - 10
1 - farmer - 3
2 - carpenter - 3
2 - miner - 4
sql sqlite select count
1个回答
1
投票

使用cross join获取行,然后使用left join / group by进行聚合:

SELECT e.event_id, j.name AS job, COUNT(s.id) AS cnt
FROM event e CROSS JOIN
     job j LEFT OUTER JOIN
     signup s
     ON j.id = s.job_id AND e.id = s.event_id
GROUP BY e.event_id, j.name
ORDER BY e.event_id, j.name;
© www.soinside.com 2019 - 2024. All rights reserved.