SQL分组

班级分组后,怎么求大于班级平均分的人数

image.png

image.png

姚友林 发布于 2022-8-11 17:23 (编辑于 2022-8-11 17:30)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
RiveryLv5中级互助
发布于2022-8-11 17:25(编辑于 2022-8-11 17:54)

with a as(SELECT a.stu_couid as 科目,a.stu_sco as 成绩,b.sco as 平均成绩

FROM R_SCORE a

left join(select stu_couid,avg(stu_sco) as sco from r_score group by stu_couid) b

on a.stu_couid=b.stu_couid

)

select 科目,count(*)

from a

where 成绩>平均成绩

group by 科目

image.png

最佳回答
0
yzm339714Lv6中级互助
发布于2022-8-11 17:35

select  class,avg(x) as "最高分",avg(n) as "最低分",avg(g) as "平均分",count(1) as "大于平均分人数"  from (

select *,max(成绩) over(partition by class) x ,,min(成绩) over(partition by class) n,avg(成绩) over(partition by class) g from 表  ) a where 成绩 > g group by class

  • 姚友林 姚友林(提问者) 这是啥
    2022-08-11 17:41 
  • yzm339714 yzm339714 回复 姚友林(提问者) 你需要的sql 啊,你需要先用开窗函数获取平均分,然后再用where 过滤出来有哪些人是大于平均分的,然后再分组求人数
    2022-08-11 17:45 
  • 姚友林 姚友林(提问者) 回复 yzm339714 你这样写好像不对吧
    2022-08-11 17:52 
  • yzm339714 yzm339714 回复 姚友林(提问者) 执行了出来结果不对吗?
    2022-08-11 17:53 
  • 3关注人数
  • 414浏览人数
  • 最后回答于:2022-8-11 17:54
    请选择关闭问题的原因
    确定 取消
    返回顶部