CDA118954

2022-11-10   阅读量: 6690

Mysql

子查询

SELECT

学生,

sum(成绩) 总分,

count(成绩) 考试次数,

班级

FROM 成绩名单

group by 学生

having sum(成绩)>(select sum(成绩)/count(distinct 学生) from 成绩名单)

AND COUNT(成绩)>(select count(学生)/count(distinct 学生) from 成绩名单)


原表

问题是:

1.学生总分大于该班的平均总分

2.学生考试次数大于该班平均考试次数

3.将上面两步得到每个班级的学生数据汇合成一张表。


180.0000 2 1 关注作者 收藏

评论(1)

CDA持证人阿涛哥
2022-11-11

union 纵向连接

0.0000 0 0 回复
CDA118954
2022-11-17

谢谢老师,不过我又用另一种办法,老师能帮我看看这个代码行不行得通,有没有缺点吗?


select

总表.班级,

总表.学生,

总表.总分,

总表.考试次数

from

(SELECT 班级,

学生,

sum(成绩) 总分,

count(成绩) 考试次数

FROM `成绩名单`

group by 班级,学生) as 总表

join

(SELECT 班级,

sum(成绩)/count(distinct 学生) 平均总分,

count(学生)/count(distinct 学生) 平均考试次数

FROM `成绩名单`

group by 班级) as 平均表

on

总表.班级=平均表.`班级`

where

总表.`总分`>=平均表.平均总分

and

总表.`考试次数`>=平均表.平均考试次数

group by 总表.班级,总表.学生

0875466e8fff16dba6195fd31b46f6f.png

0.0000 0 0 回复

推荐课程