博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用一条sql语句查询出所有课程都大于80分的学生名单:
阅读量:4291 次
发布时间:2019-05-27

本文共 1224 字,大约阅读时间需要 4 分钟。

http://www.cnblogs.com/praglody/p/6854181.html

用一条SQL语句查出每门课都大于80分的学生的姓名,数据表结构如下:

建表SQL如下:

SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for grade-- ----------------------------DROP TABLE IF EXISTS `grade`;CREATE TABLE `grade` (  `name` varchar(255) NOT NULL,  `class` varchar(255) NOT NULL,  `score` tinyint(4) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- ------------------------------ Records of grade-- ----------------------------INSERT INTO `grade` VALUES ('张三', '语文', '81');INSERT INTO `grade` VALUES ('张三', '数学', '75');INSERT INTO `grade` VALUES ('李四', '语文', '76');INSERT INTO `grade` VALUES ('李四', '数学', '90');INSERT INTO `grade` VALUES ('王五', '语文', '81');INSERT INTO `grade` VALUES ('王五', '数学', '100');INSERT INTO `grade` VALUES ('王五', '英语', '90');SET FOREIGN_KEY_CHECKS=1;

 

查询每门课都大于80分的同学的姓名:

SELECT DISTINCT name FROM grade WHERE name NOT IN(SELECT DISTINCT name FROM grade WHERE score <=80);

  更简单的:

SELECT name FROM grade GROUP BY name HAVING MIN(score) > 80;

 

查询平均分大于80的学生的姓名:

SELECT name FROM (SELECT COUNT(*) AS t,SUM(score) AS num,name FROM `grade` GROUP BY name) AS a WHERE a.num > 80*t;

 更简单的:

select name, avg(score) as sc from grade g1 group by name having avg(score)>80 ;
你可能感兴趣的文章
查看个线程的CPU 内存占用
查看>>
Fiddler 教程
查看>>
apache 设置用户注意事项
查看>>
svn中设置文件夹链接
查看>>
find ./ -name "*.cgi" |xargs -i cp "{}" ./cgi-bin/
查看>>
svn st | awk '{if ( $1 == "?") { print $2}}' | xargs svn add
查看>>
mysql事务处理用法与实例详解
查看>>
利用iptables来配置linux禁止所有端口登陆和开放指定端口
查看>>
Python模块——struct
查看>>
mysql中select * for update
查看>>
linux vmstat 1 ,watch , pmap -p,
查看>>
MYSQL 相关
查看>>
python 构建client 程序
查看>>
c++ 加载so动态库中的资源
查看>>
加解密 签名
查看>>
linux top 命令分析
查看>>
Linux vmstat命令详解
查看>>
linux pmap命令
查看>>
MySQL数据同步【双主热备】
查看>>
Mysql主从复制实践手册
查看>>