获得所有用户的总提交数量和已接受和被拒绝的提交数量

时间:2017-09-10 11:35:18

标签: mysql sql

我在数据库中有两个表,我必须从中获取列表。 第一个表是users表,它只是一个包含用户信息的普通表。另一个表是提交表,其中包含用户提交的列表。例如,你可以假设这个表如下

id user_id submission_name status
1   1         nnnn          pending
2   1         fgs           accepted
3   2         sds           rejected
4   2        asdasd         pending

我想获得如下数据 (假设用户和提交表的左连接)

id username   total_submissions accepted_subs rejected_subs pending_subs
1   ABC           2                    1            0         1
2   XYZ           2                    0            1         1

我正在使用mysql。可以使用什么查询来获取这样的数据? 我能够得到这个数据

id username   total_submissions 
    1   ABC           2       
    2   XYZ           2      

1 个答案:

答案 0 :(得分:1)

显然,根据您提供的数据,您无法获得username。但是你的问题的其余部分是使用条件聚合解决的:

select s.user_id, count(*) as total_submissions,
       sum( s.status = 'accepted' ) as accepted,
       . . .  -- add additional expressions here for other statuses
from submissions s
group by s.user_id;

您应该能够如何将表连接在一起以获取用户名。