关于面试总结6-SQL经典面试题
前言
用一条SQL 语句查询xuesheng表每门课都大于80 分的学生姓名,这个是面试考sql的一个非常经典的面试题
having和not in
查询 xuesheng表每门课都大于80 分的学生姓名
name | kecheng | score |
---|---|---|
张三 | 语文 | 81 |
张三 | 数学 | 73 |
李四 | 语文 | 86 |
李四 | 数学 | 90 |
王五 | 数学 | 89 |
王五 | 语文 | 88 |
王五 | 英语 | 96 |
解决办法一: having
如果不考虑学生的课程少录入情况(比如张三只有2个课程,王五有3个课程)
SELECT name
FROM xuesheng
GROUP BY name
HAVING MIN(score)> 80
如果考虑学生的课程数大于等于3的情况
SELECT name
FROM xuesheng
GROUP BY name
HAVING MIN(score)> 80
AND COUNT(kecheng)>=3
解决办法二:not in
可以用反向思维,先查询出表里面有小于80分的name,然后用not in去除掉
SELECT DISTINCT name
FROM xuesheng
WHERE name NOT IN(SELECT DISTINCT name FROM xuesheng WHERE score <=80);
删除
学生表xueshengbiao 如下:自动编号 学号 姓名 课程编号 课程名称 分数
autoid | id | name | kcid | kcname | score |
---|---|---|---|---|---|
1 | 2005001 | 张三 | 0001 | 数学 | 69 |
2 | 2005002 | 李四 | 0001 | 数学 | 89 |
3 | 2005001 | 张三 | 0001 | 数学 | 69 |
删除除了自动编号不同, 其他都相同的学生冗余信息
DELETE t1
FROM xueshengbiao t1, xueshengbiao t2
WHERE t1.id = t2.id
and t1.name = t2.name
and t1.kcid = t2.kcid
and t1.kcname = t2.kcname
and t1.score = t2.score
and t1.autoid < t2.autoid
如果只是查询出自动编号不同, 其他都相同的学生冗余信息,可以用group by
SELECT * from xueshengbiao t1
WHERE t1.autoid
NOT IN(SELECT MIN(autoid) as autoid FROM xueshengbiaoGROUP BY id, name, kcid, kcname, score)
模糊查询%
表名:student ,用sql查询出“张”姓学生中平均成绩大于75分的学生信息;
name | kecheng | score |
---|---|---|
张青 | 语文 | 72 |
张华 | 英语 | 81 |
王华 | 数学 | 72 |
张青 | 物理 | 67 |
李立 | 化学 | 98 |
张青 | 化学 | 76 |
select * from student
where name in
(select name from student
where name like '张%' group by name having avg(score) > 75);
SQL 通配符
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。SQL 通配符用于搜索表中的数据。在 SQL 中,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist]或[!charlist] | 不在字符列中的任何单一字符 |
**MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式 **
找出姓张和姓李的同学, 用rlike实现匹配多个
-- 找出姓张和姓李的
select * from xuesheng
where name in
(select name from xuesheng
where name rlike '[张李]' group by name having avg(score) > 75);
也可以用 REGEXP,结合正则匹配
select * from xuesheng
where name in
(select name from xuesheng
where name REGEXP '^[张李]' group by name having avg(score) > 75);
交流QQ群:779429633
关于面试总结6-SQL经典面试题相关推荐
- 【笔试/面试】SQL 经典面试题
基本概念 (1)any/all,构成 where 子句的条件判断,any:表示或(or)的概念,all:则表示与(and)的概念,这两个关键字的出现是为了语句的简化: (2)先分组再做聚合,逻辑上也应 ...
- SQL经典面试题及答案
转载自:http://blog.csdn.net/hwq1987/article/details/6670300 SQL经典面试题及答案 2007年07月27日 星期五 上午 08:42 1.一道SQ ...
- Hive SQL经典面试题:统计连续登陆的三天及以上的用户
Hive SQL经典面试题 最近发现一道大数据面试经常会问的SQL题目:统计连续登录的三天及以上的用户(或者类似的:连续3个月充值会员用户.连续N天购买商品的用户等),下面就来记录一下解题思路. 要求 ...
- 游戏必备组件有哪些_面试必备:2019Vue经典面试题总结(含答案)
点击右上方红色按钮关注"web秀",让你真正秀起来 面试必备:2019Vue经典面试题总结(含答案) 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写 ...
- sql经典面试题50题
总结不甚清楚的有:10,19,20,22,24,25,28,41,42 --1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数 --1.1.查询同时 ...
- 数据库SQL经典面试题详解
SQL面试题不外乎增删改查,对于这种类型的题目,我的经验是先把每个表的关联关系搞清楚,它们之间是通过哪些字段关联的,可以在纸上画出关联图,再去编写SQL就不会那么头大了. 下面是四张表的关联关系图: ...
- 前端面试——那些web前端经典面试题大全及答案(html/css部分)
阅读目录 HTML/CSS部分 JavaScript部分 JQuery部分 开发及性能优化部分 HTML/CSS部分 1.什么是盒子模型 在网页中,一个元素站有空间的大小由几个部分构成,其中包括元素的 ...
- SQL经典面试题(二)
有3个表S,C,SC S(SNO,SNAME)代表(学号,姓名) //主键:SNO //多个人,多门课 3张表 ,SC 关系表 C(CNO,CNAME,CTEACHER)代表(课号,课名, ...
- mysql 经典面试_这些MySQL经典面试题你要知道!
1.MySQL的复制原理以及流程(1).复制基本原理流程 1. 主:binlog线程--记录下所有改变了数据库数据的语句,放进master上的binlog中: 2. 从:io线程--在使用start ...
- oracle sql经典面试题,经典SQL面试题2
题目: 一张名为workersalary的表,要求查询出全部信息,并且salary最高的三个人按升序排列在结果的最开头,其余的人按原有顺序排列.这个sql如何写? 解答: (1)题意理解 假如原先的表 ...
最新文章
- boost::mp11::mp_reverse_fold相关用法的测试程序
- Project Eular 634
- linux怎么用命令备份数据库,使用linux的mysqlhotcopy命令备份数据库
- Symbian编程VC开发环境设置
- 小白如何写Python算法-计算模型稳定性评估指标PSI
- 一个程序让你学会C++构造函数与重载构造、析构函数【C++类的经典使用案例】
- 【渝粤教育】电大中专消费者行为学 (2)作业 题库
- HP服务器远程管理工具iLO详细介绍
- 残差、方差、偏差、MSE均方误差、Bagging、Boosting、过拟合欠拟合和交叉验证
- 平台的边际成本与商家的边际成本
- Mac 下 NVM 的安装与使用
- 微信小程序的路由,以及生命周期
- 讨论java类的图书推荐
- Android Studio新建工程及测试效果
- eclipse-查看继承层次图/继承实现层次图
- MySQL本地可以连接,远程连接不上的问题
- c语言图像压缩编码,基于C语言的图像压缩算法
- 【华为云技术分享】如何将代码自动迁移到鲲鹏平台
- vscode配置-保存格式化
- 4.9 鞅-简单随机游走(Durrett)答案
热门文章
- Spring5入门学习一
- 【keytool】keytool查看jks证书详情
- XMLSpy入门实验---第一个XML
- 酉矩阵(unitary matrix)
- 华为推出首款折叠屏5G手机;微信“上车”时间已定;社区团购暗潮涌动
- 网易企业邮箱的网易文档是什么?
- Android 腾讯信鸽集成
- 通信upf是什么意思_中兴通讯全场景UPF 极简设计,随需而动
- 可以拍c语言答案的软件下载,c语言二级考试题库app下载-C语言二级考试题库 安卓版v2.3-PC6安卓网...
- matlab中用xlsread()函数在Excel中读取数据