You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何按科目统计各志愿偏好对应的选择人数

MySQL 分科目统计各志愿梯度选择人数

核心实现思路

基于科目表做主表左关联志愿填报数据,通过条件聚合按志愿优先级分别计数,保证所有科目都能出现在统计结果中,不会遗漏无人填报的科目。

可直接运行的SQL代码

注意:如果你的学生志愿偏好关联表有自定义正式表名,替换SQL中对应的表名即可

SELECT
    m.subName AS SubName,
    COUNT(CASE WHEN p.Preferences = 1 THEN p.student_id END) AS `Preference 1 Count`,
    COUNT(CASE WHEN p.Preferences = 2 THEN p.student_id END) AS `preference 2`,
    COUNT(CASE WHEN p.Preferences = 3 THEN p.student_id END) AS `preference 3`
FROM majorsubjects m
LEFT JOIN student_preference_relation p -- 此处替换为你实际的志愿关联表表名
    ON m.id = p.subject_id
GROUP BY m.id, m.subName;

基于提供的测试数据的返回结果

SubNamePreference 1 Countpreference 2preference 3
sub1010
sub2200
sub3001
sub4011

逻辑说明

  • 采用LEFT JOIN关联主修科目表和志愿关联表,确保即使某科目没有任何学生填报,也会在结果中显示,对应三个志愿的人数为0
  • 分组字段同时使用科目主键id和科目名称subName,避免不同科目重名导致统计结果错误
  • 条件计数时统计非空的学生ID,自动排除不匹配志愿梯度的NULL值,统计结果准确
  • 不需要关联学生表,因为志愿关联表中已经有student_id可以直接计数(业务规则为每位学生每个梯度只填1个志愿,不存在重复数据,直接计数即可)

内容的提问来源于stack exchange,提问作者BABA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:57:21