我需要总结一下另一个一对多关系中一对多关系的计数。我不知道那是否有可能,但是我必须尝试。
我有三个表,如下所示:
'plan_by_years'
ID year circle_id ...
1 2018 1
2 2018 2
3 2019 1
4 2020 3
等,基本上一年可以有很多圈子。 现在,每个圈子可以有很多成员,并且一年中都在运营
'members'
ID member circle_id
1 A 1
2 B 1
3 C 2
4 C 1
5 D 3
我需要将数据放入一个表中,以便以后可以对其进行排序和过滤。该表必须包含一年中的成员总数和圈子总数。会员每年只能计数一次。
结果应如下所示:
year number_of_circle total_member
2018 2 3
2019 1 3
2020 1 1
请帮助。
答案 0 :(得分:2)
您可以通过两个单独的COUNT
获得此结果,一个用于圈子,一个用于成员。在这两种情况下,您都需要COUNT(DISTINCT ...)
来避免每年重复计算圈子或成员:
SELECT p.year,
COUNT(DISTINCT p.circle_id) AS number_of_circle,
COUNT(DISTINCT m.member) AS total_member
FROM plan_by_years p
LEFT JOIN members m ON m.circle_id = p.circle_id
GROUP BY p.year
输出:
year number_of_circle total_member
2018 2 3
2019 1 3
2020 1 1