码迷,mamicode.com
首页 > 数据库 > 详细

InterviewQuestion_SQLServer_Probl_查询每门课都大于80分的学生姓名

时间:2017-09-11 12:16:39      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:英语   ada   sum   技术   错误   数学   nbsp   dao   自己   

题目:用一条SQL语句查询出每门课都大于80分的学生姓名。

技术分享

最近面试C#开发工程师,碰到上面这个考数据库的题目,自己感觉有点难度,没有思路,现将找到的解决方案整理如下:

文件:SQLQuery1.sql

/*
环境:Microsoft SQL Server 2012
工具: Microsoft SQL Server Management Studio
数据库: Interview
数据表: grade
详情:
name    class    score
张三    语文    81
张三    数学    75
李四    语文    76
李四    数学    90
王五    语文    81
王五    数学    100
王五    英语    90
*/

--查询出每门课都大于80分的学生姓名:
--方法1
SELECT DISTINCT name FROM grade WHERE name NOT IN(SELECT DISTINCT name FROM grade WHERE score <= 80);
--方法2
SELECT name FROM grade GROUP BY name HAVING MIN(score) > 80;

--查询平均分大于80的学生的姓名:
--方法1
SELECT name FROM (SELECT COUNT(*) AS t,SUM(score) AS num,name FROM grade GROUP BY name) AS a WHERE a.num > 80*t;
--方法2
SELECT name,AVG(score) AS sc FROM grade g1 GROUP BY name HAVING AVG(score) > 80;

运行结果:

结果1:

技术分享

结果2:

技术分享

结果3:

技术分享

结果4:

 技术分享

以上整理,如有错误之处或有更好的方法,请看到朋友不吝指正,谢谢!

参考文章:

http://www.cnblogs.com/praglody/p/6854181.html?utm_source=itdadao&utm_medium=referral

InterviewQuestion_SQLServer_Probl_查询每门课都大于80分的学生姓名

标签:英语   ada   sum   技术   错误   数学   nbsp   dao   自己   

原文地址:http://www.cnblogs.com/jswl/p/7504060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!