我正在尝试查询有多少人处于状态 3 的事件。我认为我需要 COUNT 或 SUM,但自从我之前这样做以来已经很长时间了,而且我已经尝试过搜索了很多,但我仍然很困惑。假设我有以下内容。
事件表:
activity_id status
1 3
2 3
3 1
Person_activity表:
person_id activity_id
1 1
1 2
2 2
2 3
3 3
我想要输出查询:
person_id no_of_status_3
1 2
2 1
3 0
如有任何建议,我们将不胜感激。提前致谢。
最佳答案
这应该做:
SELECT PA.person_id,
COUNT(A.activity_id) no_of_status_3
FROM Person_activity PA
LEFT JOIN ( SELECT *
FROM Activity
WHERE status = 3) A
ON PA.activity_id = A.activity_id
GROUP BY PA.person_id
Here is an sqlfiddle与这个演示。结果是:
╔═══════════╦════════════════╗
║ PERSON_ID ║ NO_OF_STATUS_3 ║
╠═══════════╬════════════════╣
║ 1 ║ 2 ║
║ 2 ║ 1 ║
║ 3 ║ 0 ║
╚═══════════╩════════════════╝
关于sql - 查找一列中与另一列中的特定行值相关的相同行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964139/