如何在MySQL中获取COUNT()列的SUM()

如何在MySQL中获取COUNT()列的SUM(),mysql,count,left-join,Mysql,Count,Left Join,我有以下查询,尝试使用case语句 SELECT t.inst_id, t.inst_username, tcm.city_name, SUM(CASE WHEN psb.pms_student_bucket_id IS NULL THEN 1 ELSE 0 END) AS not_assiged, SUM(CASE WHEN COUNT(psb.pms_student_bucket_id) BETWEEN 1 AND 50 THEN 1 ELSE 0 END) AS '1-50', SUM(C

我有以下查询,尝试使用case语句

SELECT t.inst_id, t.inst_username, tcm.city_name,
SUM(CASE WHEN psb.pms_student_bucket_id IS NULL THEN 1 ELSE 0 END) AS not_assiged,
SUM(CASE WHEN COUNT(psb.pms_student_bucket_id) BETWEEN 1 AND 50 THEN 1 ELSE 0 END) AS '1-50',
SUM(CASE WHEN COUNT(psb.pms_student_bucket_id) > 50 THEN 1 ELSE 0 END) AS ' > 50'
FROM tbl_si_di t
JOIN tbl_city_master tcm ON tcm.city_id = t.city_ref_id
JOIN tbl_si_students tss ON tss.inst_ref_id = t.inst_id
LEFT JOIN pms_student_bucket psb ON psb.user_ref_id = tss.user_ref_id
GROUP BY t.inst_id;
我需要pms_student_bucket_id列的总和,当它们的计数为'1-50'和'>50'时。现在这个查询是说
组函数的使用无效


在mysql中,“pms\u student\u bucket\u id”的计数等于/介于某个值之间,我该如何求和

您可以将其放入子查询中

SELECT inst_id, inst_username, city_name, 
    SUM(pms_student_bucket_id IS NULL ) AS not_assiged,
    SUM(num_bucket >=10 AND num_bucket <= 20) AS '10 - 20'
    SUM(num_bucket <= 50) AS '1-50',
    SUM(num_bucket > 50) AS ' > 50'
FROM
(   SELECT t.inst_id, t.inst_username, tcm.city_name,psb.pms_student_bucket_id,     
        COUNT(psb.pms_student_bucket_id) as num_bucket
    FROM tbl_si_di t
    JOIN tbl_city_master tcm ON tcm.city_id = t.city_ref_id
    JOIN tbl_si_students tss ON tss.inst_ref_id = t.inst_id
    LEFT JOIN pms_student_bucket psb ON psb.user_ref_id = tss.user_ref_id
    GROUP BY t.inst_id
)t1
GROUP BY inst_id;
选择仪表id、仪表用户名、城市名称、,
总和(pms学生桶id为空)未分配,

SUM(num_bucket>=10和num_bucket谢谢,当计数在10-20之间时,我如何写上面的内容来获得总和?@sam我刚刚编辑过…您可以为布尔结果输入多个条件:)我包含>=10,为什么我不能对第一个“未分配”列使用num_bucket值?就像SUM(num_bucket<1)是‘not_assiged’?@sam我不知道你的意思。。。num_bucket是pms_学生_bucket_id的计数。。。因此,如果您想看到当它小于1时,只需执行未分配的
SUM(num_bucket=0)oh no,它实际上并没有求num_bucket行数的和,即使pms_student_bucket表中有更多行,它也只返回1