检索选修 三门 以上课程的学生总成绩(>59分才统计) mysql有问题啊!!!

默魑 发布于 2016/12/25 02:36
阅读 738
收藏 0

这是我的表

只有学号为1 的这位兄弟选修了4门课 (3门59,一门61),只需看他即可


2、这是我的查询语句

可以看见,查询条件为59以上的,查不出来。  但是感觉语句没有问题啊

这是为什么???   别让我去百度,百度上的查询语句和我这一样~~~真是不知道说什么好



加载中
0
Tuesday
Tuesday

sum(成绩) AS psum

having psum >= (59*3)   // 对结果进行再次判断.

默魑
大兄弟,不对啊,还是报错了 mysql> select 学号,sum(成绩) as psum having psum>=(59*3) from sc group by 学号 having count(课程号)>3; 是这样写的吧。。。
苏生不惑
苏生不惑
厉害了我的哥,可以去https://segmentfault.com/ 答题
0
la_lala
la_lala

count函数统计的是where条件限制之后的结果集,你可以吧having条件去掉,看下count得到的值都是1


默魑
恩,我也发现这个问题了,是where先过滤了一遍; 那我想实现这个功能,应该怎么写查询呢??
0
云端漫漫步
云端漫漫步
你的where条件>59,首先就限制到了查询的只会有61分的人,然后61分的人里边没有哪一个是修了三门课以上的,所以肯定查不出来的,你可以试试只用where条件的查询结果就懂了
小小小小羽毛
小小小小羽毛
回复 @默魑 : 你自己的>58的,不就已经实现了么
默魑
恩,我也发现这个问题了,是where先过滤了一遍; 那我想实现这个功能,应该怎么写查询呢??
0
XiaoGiving
XiaoGiving

你可以试试 

select sum(t.score) from

       (
              select
              count(*) as count,学号 as stu,成绩 as score 
              from 
              sc 
              group by sc.学号

           having sc.成绩>=59

    ) t

group by t.stu having t.count>3

这个sql,不知道对不对

还有你的这个字段取名怎么能写汉字啊,兄弟

0
lin大大
lin大大
先查一门成绩<=59的  然后 再用 not in  找出不在这个集合。或者使用group by + hvaing
0
Z
Zara

这个题目看着很奇怪呀

需求是:选修3门以上课程的学生编号及总成绩,>59分才统计是什么意思??

     只有>59分的,才算成功选修了一门课吗??如果是,学生1(3门59,1门61)也不能算是选修3门以上呀,或者是:选修的科目(>3)且有任意一科分数大于59分即可??

0
Sel8616
Sel8616

用子查询,在子查询里先把选三门课的人筛出来,在主查询里统计成绩。

我很少用mysql,不知道下面写的对不对

select 学号,count(成绩) from(
    select * from sc group by 学号 having count(课程号)>3
) where 成绩>59 group by 学号;




返回顶部
顶部