gpt4 book ai didi

mysql - 如何将两列中的不同值计为一个数字

转载 作者:行者123 更新时间:2023-12-02 00:47:28 25 4
gpt4 key购买 nike

我正在处理的两个表是:

提交:

+----+------------+
| id | student_id |
+----+------------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+----+------------+

群组提交:

+----+---------------+------------+
| id | submission_id | student_id |
+----+---------------+------------+
| 1 | 1 | 2 |
| 2 | 2 | 1 |
+----+---------------+------------+

只有一个学生实际提交并进入提交表,而其他人进入group_submissions表(如果提交是小组提交)

我想计算作为一个小组或单独提交的学生的唯一数量

我只想最后返回数字(根据上表中的数据为 3)

提交表中的学生如果在 group_submission 表中,则不应被计算两次,反之亦然。

此外,只完成个人提交(不在 group_submissions 表中)的学生也应该被计算在内,无论他们是否曾经参加过小组提交

我已经在我正在构建的查询中对这些表执行了一些其他操作,所以如果你能给我一个基于连接这两个表的解决方案,那将会有所帮助。

这是我尝试过的:

count(distinct case when group_submissions.student_id is not null then group_submissions.student_id end) + count(distinct case when submissions.student_id is not null then submissions.student_id end)

但它给了我重复项,所以如果一个学生同时出现在两个表中,他将被计算两次。

有什么想法吗?

注意:这是一个 MySQL 数据库。

最佳答案

我想你想要union 和一个计数:

select count(*)
from ((select student_id
from submissions
)
union -- on purpose to remove duplicates
(select student_id
from group_submissions
)
) s;

关于mysql - 如何将两列中的不同值计为一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60620442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com