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

能否用单条SQL语句完成SQLite中学生成绩册人口统计聚合查询?

解决方案

你可以通过条件聚合(使用CASE WHEN配合SUM)来统计男女生人数,SQLite完全支持这种语法。以下是完善后的完整SQL语句:

SELECT 
  g.period AS 班级,
  COUNT(s.perm_id) AS 学生数,
  ROUND(AVG(r.percent), 1) AS 百分比, -- 匹配示例结果保留1位小数,需2位可改回2
  ROUND(AVG(s.gpa), 2) AS GPA,
  SUM(CASE WHEN s.gender = '男' THEN 1 ELSE 0 END) AS 男生数,
  SUM(CASE WHEN s.gender = '女' THEN 1 ELSE 0 END) AS 女生数
FROM rosters r, students s, gradebooks g
WHERE r.perm_id = s.perm_id 
  AND r.gradebook_number = g.gradebook_number
GROUP BY g.period
ORDER BY g.period;

关键说明

  1. 男女生统计逻辑:
    • SUM(CASE WHEN s.gender = '男' THEN 1 ELSE 0 END):遍历每个学生,性别为男则返回1,否则返回0,求和后得到男生总数。
    • 女生统计逻辑同理,仅需修改CASE WHEN的判断条件。
  2. 小数位数适配:示例结果中百分比保留1位小数,因此调整了ROUND函数的第二个参数,若需和原语句一致保留2位,改回ROUND(AVG(r.percent),2)即可。
  3. 可读性优化建议:推荐使用显式JOIN语法替代隐式逗号连接,逻辑更清晰:
    FROM rosters r
    JOIN students s ON r.perm_id = s.perm_id
    JOIN gradebooks g ON r.gradebook_number = g.gradebook_number
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:53:26