Sql 查找与另一列中特定行值相关的列中的相同行数
我正在尝试进行查询,以了解有多少人的活动处于状态3。我想我需要一个计数或求和,但我已经很久没有这样做了,我已经尝试了很多次搜索,但仍然感到困惑。假设我有以下几点 活动表:Sql 查找与另一列中特定行值相关的列中的相同行数,sql,database,select,sql-server-2008-r2,Sql,Database,Select,Sql Server 2008 R2,我正在尝试进行查询,以了解有多少人的活动处于状态3。我想我需要一个计数或求和,但我已经很久没有这样做了,我已经尝试了很多次搜索,但仍然感到困惑。假设我有以下几点 活动表: activity_id status 1 3 2 3 3 1 person_id activity_id 1 1 1 2 2 2 2 3 3
activity_id status
1 3
2 3
3 1
person_id activity_id
1 1
1 2
2 2
2 3
3 3
人员活动表:
activity_id status
1 3
2 3
3 1
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)
FROM person_activity pa
LEFT JOIN activity a ON (pa.activity_id = a.activity_id AND a.status = 3)
GROUP BY pa.person_id
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
有一个演示。结果是:
╔═══════════╦════════════════╗
║ PERSON_ID ║ NO_OF_STATUS_3 ║
╠═══════════╬════════════════╣
║ 1 ║ 2 ║
║ 2 ║ 1 ║
║ 3 ║ 0 ║
╚═══════════╩════════════════╝
仅从标题-
JOIN
和groupby
意外命中mysql标记,这是sql server 2008,它将返回person\u id=3
的值1
是的,应该计算活动id,而不是“*”-我没有检查我的错误