各种SQL子查询实例
返回订单表中订单价值超过5000美元的那些客户的详细信息。
SELECT * FROM customers
WHERE cust_id IN (SELECT DISTINCT cust_id FROM orders WHERE order_value > 5000);
子查询也可以与INSERT语句一起使用。
INSERT INTO premium_customers
SELECT * FROM customers
WHERE cust_id IN (SELECT DISTINCT cust_id FROM orders WHERE order_value > 5000);
通过使用子查询返回的数据,将高级客户的记录插入名为premium_customers的表中。 这里的高级客户是已下订单价值超过5000美元的客户。
带有UPDATE语句的子查询
还可以将子查询与UPDATE语句结合使用,以更新表中的单列或多列,
UPDATE orders
SET order_value = order_value + 10
WHERE cust_id IN (SELECT cust_id FROM customers WHERE postal_code = 75016);
通过将当前订单值增加10美元,更新订单(orders)表中邮政编码为75016的地区的客户的订单值。
带有DELETE语句的子查询
可以将子查询与DELETE语句结合使用,以删除表中的单行或多行,
DELETE FROM orders
WHERE order_id IN (SELECT order_id FROM order_details WHERE product_id = 5);
从包含product_id为5的产品的订单表中删除这些订单。
SELECT *
FROM EMP
WHERE SAL < (SELECT AVG(SAL) FROM EMP);
查询薪资比平均薪资低的员工信息
HAVING子句是对分组统计函数进行过滤的子句,也可以在HAVING子句中使用子查询
SELECT JOB,AVG(SAL)
FROM EMP
GROUP BY JOB
HAVING AVG(SAL) = (SELECT MAX(AVG(SAL)) FROM EMP GROUP BY JOB);
查询平均薪资最高的职位及其平均薪资
FROM子查询
FROM子查询就是将一个查询结构(一般多行多列)作为主查询的数据源
SELECT JOB,AVG(SAL)
FROM (SELECT JOB,AVG(SAL) AS AVGSAL FROM EMP GROUP BY JOB)TEMP
WHERE TEMP.AVGSAL>2000;
查询平均薪资高于2000的职位以及该职位的平均薪资
SELECT子查询
SELECT子查询在SELECT子句中使用查询的结果(一般会和dual空表一起使用)
SELECT (SELECT COUNT(*) FROM EMP WHERE JOB = 'SALESMAN')/(SELECT COUNT(*) FROM EMP)
FROM DUAL;
职位是SALESMAN的员工占总员工的比例
EXISIT子查询
将主查询的数据带到子查询中验证,如果成功则返回true,否则发水false。主查询接收true是就会显示这条数据,flase就不会显示。
SELECT *
FROM EMP E
WHERE EXISIT (
SELECT *
FROM DEPT D
WHERE E.DEPTNO = D.DEPTNO);
查询有部门的员工信息
查询薪资排名的员工信息
SELECT *
FROM EMP
WHERE SAL = (SELECT MIN(SAL)
FROM (SELECT ROWNUM,SAL
FROM (SELECT SAL FROM EMP GROUP BY SAL ORDER BY SAL DESC)
WHERE ROWNUM<=n));
查询薪资排名第n个员工的信息(包括并列排名)
思路:
1.先按薪资降序分组
2.再取前n名薪资中最低的薪资,即第n名的薪资。
3.最后在原表中找出薪资与最低薪资相同的员工信息。
查询平均成绩比‘王五’大的学生id,姓名,平均成绩
select s.s_id , s.s_name , avg(score)
from t_student s join t_grade g on s.s_id = g.s_id
group by s.s_id , s.s_name
having avg(score) > (select avg(score)
from t_student s join t_grade g on s.s_id = g.s_id
where s.s_name = '王五'
group by s.s_id)
查询其他课程中比课程id为‘400004’课程的任一分数低的学生的学号、姓名、课程号、课程名、分数(ANY)
select s.s_id , s_name , c.c_id , c_name , score
from t_grade g join t_student s on g.s_id = s.s_id
join t_course c on g.c_id = c.c_id
having c.c_id != 400004 and avg (score) < any (
select avg(score)
from t_grade
where c_id = 400004
group by (c_id)
)
group by c.c_id , s.s_id , s.s_name , c_name ,score
查询其他课程中比课程id为‘400004’课程的所有分数高的学生的学号、姓名、课程号、课程名、分数(ALL)
select s.s_id , s_name , c.c_id , c_name , score
from t_grade g join t_student s on g.s_id = s.s_id
join t_course c on g.c_id = c.c_id
having c.c_id != 400004 and score > all (
select score
from t_grade
where c_id = 400004
)
group by c.c_id , s.s_id , s.s_name , c_name ,score
内联视图子查询
(1)SELECT ename,job,sal,rownum
FROM (SELECT ename,job,sal FROM EMP ORDER BY sal);
(2)SELECT ename,job,sal,rownum
FROM ( SELECT ename,job,sal FROM EMP ORDER BY sal)
WHERE rownum<=5;
在HAVING子句中使用子查询
SELECT deptno,job,AVG(sal) FROM EMP GROUP BY deptno,job HAVING AVG(sal)>(SELECT sal FROM EMP WHERE ename='MARTIN');
列出其销售目标超过各个销售人员定额综合的销售点。
SELECT CITY
FROM OFFICES
WHERE TARGET > (SELECT SUM(QUOTA)
FROM SALESREPS
WHERE REP_OFFICES = OFFICE)
子查询编写的许多查询也可以写成多表查询或连接:
列出在西部地区销售点工作的销售人员(表1)的名字(表2);
SELECT NAME,AGE
FROM SALESREPS
WHERE REP_OFFICE IN (SELECT OFFICE
FROM OFFICES
WHERE REGION = ‘Western’)
SELECT NAME,AGE
FROM SALESREPS,OFFICES
WHERE REP_OFFICE = OFFICE
AND REGION = 'Western'
列出销售量超过平均定额的销售人员的名字和年龄
SELECT NAME,AGE
FROM SALESREPS
WHERE QUOTA > (SELECT AGE(QUOTA)
FROM SALESREPS)
(在这个例子中,内部查询是一个汇总查询,外部查询不是,所以不能把两个查询组合成一个连接。)
列出对ACI生产的产品,其取得的平均订单大小超过了总的平均订单大小的销售人员
SELECT NAME,AVG(AMOUNT)
FROM SALESREPS,ORDERS
WHERE EMPL_NUM = REP
AND MFR = ‘ACI’
GROUP BY NAME
HAVING AVG(AMOUNT) > (SELECT AVG(AMOUNT)
FROM ORDERS)
各种SQL子查询实例相关推荐
- 图解SQL子查询实例
1 创建示例表 先创建示例表: ------------------------- -- Create Customers table ------------------------- CREATE ...
- sql子查询示例_SQL更新查询示例说明
sql子查询示例 In this article, we're going to learn how to use the SQL update statement - what it is, wha ...
- sql子查询示例_学习SQL:SQL查询示例
sql子查询示例 In the previous article we've practiced SQL, and today, we'll continue with a few more SQL ...
- sql 子查询 嵌套查询_SQL子查询– SQL中的嵌套查询
sql 子查询 嵌套查询 In the real world, there are times when we need a particular set of data but we don't h ...
- sql 子查询及基本语句 挺全的收录
引自https://blog.csdn.net/jia_gugang/article/details/80282873 一.SQL子查询语句 1.单行子查询 select ename, ...
- SQL子查询、关联查询
SQL子查询.关联查询: 注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除! 持续更新中- 如有对思路不清晰或有更好的解决思路,欢迎与本人交流,QQ群:273557553,个人微信 ...
- sql子查询的妙用:用在from后面做子表、用在where后面做子条件以及用在select后面用作子字段
昨天去客户方让客户小姐姐给我查询一段sql的时候,竟然发现sql子查询还可以这样写: sql子查询不仅仅可以出现在from 后面作为表结构,譬如: select t1.company_id,t1.co ...
- mysql模糊查询实例_Mysql实例sql模糊查询实例详解
<Mysql实例sql模糊查询实例详解>要点: 本文介绍了Mysql实例sql模糊查询实例详解,希望对您有用.如果有疑问,可以联系我们. 导读:常用的模糊查询语句:select 字段 fr ...
- 数据库复习——SQL子查询(IN,θsome,Exists子查询)
前言 战神的课实例好多太棒了,推荐,本节关于SQL复杂查询 正文 首先可以根据课程ppt上的图文建立一个SCT数据库,老师上课的内容大部分都用的是这个数据库中的实例,除了手写,可以实际操作敲一敲巩固记 ...
最新文章
- django orm级联_第 03 篇:创建 Django 博客的数据库模型
- Android 应用防止被二次打包指南
- 8个应该了解的CSS3技术
- Scrapy框架的学习(9.Scrapy中的CrawlSpider类的作用以及使用,实现优化的翻页爬虫)
- 什么方式可以通过影子系统传播恶意代码_将恶意代码隐藏在图像中:揭秘恶意软件使用的隐写术...
- 计算机教室管理责任书,计算机教室管理安全责任书.doc
- 信息学奥赛C++语言:猴子选大王
- 初创企业融资应量力而行
- 【Kafka】01 生产者
- PS如何删除智能图层为可编辑状态
- 【Reinforcement Learning】蒙特卡洛算法
- 电脑桌面下方的任务栏卡死解决方案:
- 武汉新时标文化传媒有限公司短视频的类型
- variable ‘XXX cannot be implicitly captured in a lambda with no capture-default specified
- hbase集群的搭建(完全分布式)
- linux 命令硬盘指示灯闪烁,macOS下移动硬盘无法挂载且硬盘灯一直闪烁的解决方法...
- ‘dict_keys‘ object does not support indexing错误解决
- OpenGL学习05_点画模式(点画多边形)
- 明确数据分析目标的 3 个步骤!
- nrcellcu和nrcelldu_华为5G网管MBB操作指导书
热门文章
- 适合安装在服务器上使用的操作系统,适合于做服务器的操作系统有
- java计算机毕业设计高校体育场馆管理源码+mysql数据库+系统+lw文档+部署
- 科学研究机构管理系统
- Uniapp关于 Android原生插件开发案例
- 代谢组学检测公司怎么挑选,需要考虑哪些方面?-百趣生物
- 用逗号分割并在Python中去除空格
- 机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)
- 一篇让你熟练掌握Java常用工具包(全网最全)
- ILRuntime学习(之一)
- Django-rest-framework框架之APIView与序列化详解