mysql 面试题 查出每门课程成绩都不低于80分同学的名字

1 篇文章 0 订阅
1 篇文章 0 订阅


方法一:

先按名字分组,再在分组中过滤到成绩小于80的同学的名字

select name from student
group by name
having name not in (
select name from student
where score <80);

方法二:

先按名字分组,再在分组中直接查出每门课程的成绩大于等于80的同学的名字

select name from student
group by name
having min(score)>=80;

参考文章 :http://blog.csdn.net/liuchunming033/article/details/47279003  


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,你可以使用以下 SQL 语句计算每门课程的平均: ``` SELECT course.course_id, course.course_name, AVG(score.score) AS avg_score FROM course JOIN score ON course.course_id = score.course_id GROUP BY course.course_id, course.course_name; ``` 其中,`JOIN` 语句用于连接 `course` 和 `score` 表;`AVG()` 函数可以计算出每门课程的平均数;`GROUP BY` 语句用于按照课程分组。执行以上 SQL 语句后,将会返回每门课程的平均数,例如: ``` 01 语文 85.0000 02 数学 78.6667 03 英语 88.3333 ``` 另外,如果你想要统计每个学生的各门课程成绩,可以使用以下 SQL 语句: ``` SELECT student.student_id, student.student_name, course.course_id, course.course_name, score.score FROM student JOIN score ON student.student_id = score.student_id JOIN course ON score.course_id = course.course_id; ``` 执行以上 SQL 语句后,将会返回每个学生的各门课程成绩,例如: ``` 0101 赵一 01 语文 90 0101 赵一 02 数学 80 0101 赵一 03 英语 95 0102 钱二 01 语文 80 0102 钱二 02 数学 78 0102 钱二 03 英语 85 0103 孙三 01 语文 75 0103 孙三 02 数学 85 0103 孙三 03 英语 90 0104 李四 01 语文 88 0104 李四 02 数学 70 0104 李四 03 英语 92 0105 赵五 01 语文 85 0105 赵五 02 数学 80 0105 赵五 03 英语 82 0106 赵六 01 语文 90 0106 赵六 02 数学 85 0106 赵六 03 英语 90 0107 钱七 01 语文 75 0107 钱七 02 数学 80 0107 钱七 03 英语 95 0108 钱八 01 语文 80 0108 钱八 02 数学 75 0108 钱八 03 英语 80 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值