union 纵向连接
SELECT
学生,
sum(成绩) 总分,
count(成绩) 考试次数,
班级
FROM 成绩名单
group by 学生
having sum(成绩)>(select sum(成绩)/count(distinct 学生) from 成绩名单)
AND COUNT(成绩)>(select count(学生)/count(distinct 学生) from 成绩名单)
原表
问题是:
1.学生总分大于该班的平均总分
2.学生考试次数大于该班平均考试次数
3.将上面两步得到每个班级的学生数据汇合成一张表。
union 纵向连接
谢谢老师,不过我又用另一种办法,老师能帮我看看这个代码行不行得通,有没有缺点吗?
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 总表.班级,总表.学生
在第一节基础上 更新了函数和执行顺序:实操了字符数函数、时间函数、字段截取函数、interval函数等,除最后顺序实操因未导入数据库,导致无法执行