SQL学习之子查询,基于Oracle下的HR用户(四)

article/2025/9/27 23:47:58

六、 子查询
1 子查询介绍
1.1 什么是子查询
子查询是一个 SELECT 语句,它是嵌在另一个 SELECT 语句中的子句。
可以用组合两个查询的方法解决这个问题,放置一个查询到另一个查询中。内查询或子查询返回一个值给外查询或主查询。使用一个子查询相当于执行两个连续查询并且用第一个查询的结果作为第二个查询的搜索值。
1.2 子查询语法
在这里插入图片描述

• 子查询 (内查询) 在主查询之前执行一次
• 子查询的结果被用于主查询 (外查询)
可以将子查询放在许多的 SQL 子句中,包括:
• WHERE 子句
• HAVING 子句
• FROM 子句
2 使用子查询
2.1 使用子查询的原则
• 子查询放在圆括号中。
• 将子查询放在比较条件的右边。
• 在单行子查询中用单行运算符,在多行子查询中用多行运算符。
2.1.1 示例
谁的薪水比Abel高。用内连接实现:

select em.last_name,em.salary from employees abel,employees em 
where abel.last_name = 'Abel' and em.salary > abel.salary;

在这里插入图片描述

用子查询实现:

select em.last_name,em.salary from employees em where em.salary >(
select m.salary from employees m where m.last_name ='Abel');

在这里插入图片描述

3 子查询的类型
• 单行子查询:子查询语句只返回一行的查询
• 多行子查询:子查询语句返回多行的查询
在这里插入图片描述

3.1 单行子查询
• 仅返回一行
• 使用单行比较符
主查询对子查询结果的单行比较运算符:
3.1.1 示例一
显示那些 job ID 与雇员 141 相同的雇员的名字与 job ID。

select em.last_name,em.job_id from employees em where em.job_id = (
select job_id from employees e where e.employee_id = 141);

在这里插入图片描述

3.1.2 示例二
显示 job ID 与雇员 141 相同,并且薪水 高于雇员 143 的那些雇员。

select e.last_name,e.job_id,e.salary from employees e where e.job_id = (
select em.job_id from employees em where em.employee_id = 141) and e.salary > (
select emp.salary from employees emp where emp.employee_id = 143);

在这里插入图片描述

3.2 在子查询中使用组函数
在子查询中也可使用组函数。
3.2.1 示例
显示所有其薪水等于最低薪水的雇员的 last name、job ID 和 salary。


select em.last_name,em.job_id,em.salary from employees em 
where em.salary =(select min(salary) from employees);

在这里插入图片描述

3.3 带子查询的 HAVING 子句
可以在 WHERE 子句中使用子查询,也可以在 HAVING 子句中使用子查询。
3.3.1 示例
显示所有其最低薪水大于 部门 50 的最低薪水的部门号和最低薪水。

select em.department_id,min(em.salary) from employees em group by em.department_id having min(em.salary) > (
select min(e.salary) from employees e where e.department_id = 50);

在这里插入图片描述

3.4 什么是子查询错误?
在这里插入图片描述

子查询错误:使用子查询的一个常见的错误是单行子查询返回了多行。
3.5 多行子查询
• 返回多于一行
• 使用多行比较符
主查询对子查询的多行比较运算符

操作含义
in等于列表中的任何成员
any比较子查询返回的每一个值
all比较子查询返回的全部值

在条件中也可使用 NOT 取反。
3.6 在多行子查询中使用 IN 运算符
3.6.1 示例
查找各部门收入为部门最低的那些雇员。显示他们的名字,薪水以及部门 ID。

select e.last_name,e.department_id,e.salary  from employees e where e.salary in(
select min(em.salary) from employees em group by em.department_id);

在这里插入图片描述

3.7 在多行子查询中使用 ANY 运算符
在这里插入图片描述

< ANY 意思是小于最大值。 >ANY 意思是大于最小值。

3.7.1 示例
显示工作岗位不是 IT_PROG 的雇员,并且这些雇员的的薪水少于 IT_PROG 工作岗位的雇员的 ID、名字、工作岗位和薪水。

select e.employee_id,e.last_name,e.job_id,e.salary from employees e where e.job_id <> 'IT_PROG' and e.salary < any (
select em.salary from employees em where em.job_id = 'IT_PROG') ;

在这里插入图片描述

3.8 在多行子查询中使用 ALL 运算符
在这里插入图片描述

<ALL 意思是小于最小值。>ALL 意思是大于最大值。

ANY 与 ALL 的区别:

ANY: >ANY 表示至少大于一个值,即大于最小值。
ALL: >ALL 表示大于每一个值,既大于最大值。

3.8.1 示例
显示那些薪水低于工作岗位 IT_PROG 的最低薪水,并且工作岗位不是 IT_PROG 的所有雇员。

select e.employee_id,e.last_name,e.job_id,e.salary from employees e where e.job_id <> 'IT_PROG' and e.salary < all (
select em.salary from employees em where em.job_id = 'IT_PROG') ;

在这里插入图片描述

4 子查询小结练习
4.1 写一个查询显示与 Zlotkey 在同一部门的雇员的 last name
和 hire date,结果中不包括 Zlotkey。

select em.last_name,em.hire_date from employees em where em.department_id = (
select e.department_id from employees e where e.last_name = 'Zlotkey');

在这里插入图片描述

4.2 创建一个查询显示所有其薪水高于平均薪水的雇员的雇员号和名字。按薪水的升序排序。

select em.employee_id,em.last_name from employees em where em.salary > (
select avg(salary) from employees) order by em.salary;

在这里插入图片描述

4.3 写一个查询显示所有工作在有任一雇员的名字中包含一个 u的部门的雇员的雇员号和名字。

select e.employee_id,e.last_name from employees e where e.department_id in(
select em.department_id from employees em where em.last_name like '%u%');

在这里插入图片描述

4.4 显示所有部门地点号 (department location ID ) 是 1700的雇员的 last name、department number 和 job ID。

select em.last_name,em.department_id,em.job_id from employees em where em.department_id in(
select d.department_id from departments d where d.location_id = 1700);

在这里插入图片描述

4.5 显示每个向 King 报告的雇员的名字和薪水。

select e.last_name,e.salary from employees e where e.manager_id in(
select em.employee_id from employees em where em.last_name = 'King');

在这里插入图片描述

4.6 显 示 在 Executive 部 门 的 每 个 雇 员 的 department number、last name 和 job ID。

select em.department_id,em.last_name,em.job_id from employees em where em.department_id = (
select d.department_id from departments d where d.department_name ='Executive');

在这里插入图片描述

4.7 查询显示所有收入高于平均薪水并且工作在有任一雇员的名字中带有一个 u 的部门的雇员的 employee numbers、last、names 和 salaries。

select emp.employee_id,emp.last_name,emp.salary from employees emp where emp.salary > (
select avg(salary) from employees) and emp.department_id in(
select em.department_id from employees em where em.last_name like '%u%');

在这里插入图片描述


http://chatgpt.dhexx.cn/article/a6oSodoH.shtml

相关文章

ORA-01427:单行子查询返回多个行

今天sql进行查询时&#xff0c;执行sql语句弹出单行子查询返回多个行的错误提示 经过整改解决了这个问题 1.错误产生原因 原sql语句(为方便理解进行简化)&#xff1a; select * from 表a a where a.name (select b.name from 表b b where b.name 张三 ) 原本想通过&#…

lwl,lwr

lwl,lwr,swl,swr中的指令后缀r(right),l(left)都是相对寄存器而言&#xff0c;load操作是把取到的部分数据&#xff0c;置入寄存器的left或者right&#xff0c;store操作时将寄存器中的数据的 left或者right部分写入目标地址。无论时大端和小端寄存器的格式都是固定的&#xff…

1.9 程序示例--局部加权线性回归-机器学习笔记-斯坦福吴恩达教授

程序示例–局部加权线性回归 现在&#xff0c;我们在回归中又添加了 JLwr() 方法用于计算预测代价&#xff0c;以及 lwr() 方法用于完成局部加权线性回归&#xff1a; # coding: utf-8 # linear_regression/regression.py# ...def JLwr(theta, X, y, x, c):"""…

LWE和RLWE问题学习

LWE概念 又称误差还原&#xff0c;容错学习问题&#xff0c;即已知一个矩阵 A A A以及一个向量&#xff0c;求解 b ^ A x e \hat{b}A xe b^Axe 这里 e e e是一个固定数值范围内随机采集的一个随机噪音向量&#xff0c;所以这个问题就转化为通过 A A A和 b ^ \hat{b} b^来还…

同态加密简介

同态加密概述 基本概念 同态加密&#xff08;Homomorphic Encryption,HE&#xff09;指将原始数据经过同态加密后&#xff0c;对密文进行特定的运算&#xff0c;得到的密文计算结果在进行同态解密后的得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果。 历史与…

机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR

在网上通过看斯坦福大学的机器学习课程&#xff0c;觉得讲的非常好。同时&#xff0c;为了加强自己的记忆&#xff0c;决定将自己学到的东西和一些理解记录下来&#xff0c;希望有所收获。废话不多说&#xff0c;直接开始笔记&#xff1a; 局部加权回归&#xff08;locally we…

ROS中7自由度机械臂自定义发布订阅节点

本篇用来记录一次作业的学习例程&#xff0c;错误之处敬请谅解&#xff0c;后续修改 作业要求&#xff1a; 写两个ROS节点&#xff0c;一个节点发布连续变化&#xff08;可以按sin曲线变化&#xff09;的7自由度的关节角信息&#xff1b;另一个节点订阅第一个节点发布的关节角…

【自己动手写CPU】加载存储指令的实现

目标 修改之前一直做测试的sopc&#xff0c;为其添加数据RAM&#xff0c;测试一般加载指令的实现&#xff0c;加入特殊加载存储指令。 探讨由于加载指令引起的load相关问题&#xff0c;给出OpenMIPS的解决方法&#xff0c;验证解决效果。 加载存储指令说明 31-2625-2120-161…

自己动手写CPU之第九阶段(2)——载入存储指令说明2(lwl、lwr)

将陆续上传新书《自己动手写CPU》。今天是第38篇&#xff0c;我尽量每周四篇&#xff0c;可是近期已经非常久没有实现这个目标了。一直都有事&#xff0c;不好意思哈。 开展晒书评送书活动&#xff0c;在亚马逊、京东、当当三大图书站点上&#xff0c;发表《自己动手写CPU》书评…

LWR--local weighted regression

转自http://www.cnblogs.com/jeromeblog/p/3396486.html 简单回顾一下线性回归。我们使用了如下变量&#xff1a; x —输入变量/特征&#xff1b; y —目标变量&#xff1b; (x,y) —单个训练样本&#xff1b; m —训练集中的样本数目&#xff1b; n —特征维度&#xff1b; (x…

局部加权回归(LWR) Matlab模板

将百度文库上一份局部加权回归的代码&#xff0c;将其改为模板以便复用。 q2x,q2y为数据集&#xff0c;是n*1的矩阵&#xff1b; r是波长参数&#xff0c;就是对于距离的惩罚力度&#xff1b; q_x是要拟合的数据横坐标&#xff0c;是1*n的矩阵&#xff1b; 得到的q_y即为所求坐…

自己动手写CPU之第九阶段(2)——加载存储指令说明2(lwl、lwr)

将陆续上传新书《自己动手写CPU》&#xff0c;今天是第38篇&#xff0c;我尽量每周四篇&#xff0c;但是最近已经很久没有实现这个目标了&#xff0c;一直都有事&#xff0c;不好意思哈。 开展晒书评送书活动&#xff0c;在亚马逊、京东、当当三大图书网站上&#xff0c;发表…

1.3 欠/过拟合,局部加权回归(Loess/LWR)及Python实现(基于随机梯度下降)

import numpy as np import matplotlib.pyplot as plt #定义一个正态分布&#xff0c;参数分别为均值&#xff0c;方差以及X的行向量 def guassianDistribution(mean,var,x):return 1/np.sqrt( 2 * np.pi * var )*np.exp( - (x[1]-mean) ** 2 / (2*var) ) #定义权值计算函数&am…

ubuntu18.04 编译rtt-lwr

https://rtt-lwr.readthedocs.io/en/latest/install/install-18.04-melodic.html 一路通过。 coundt find AF_INET address #4 Open roboticsai opened this issue on Mar 22, 2018 2 comments Comments roboticsai commented on Mar 22, 2018 after i run the rttlua-gnu…

LWR服务管理框架

详细接口文档地址:https://www.showdoc.cc/lwr2 目前支持微信版本&#xff1a;最新版。 主要介绍开发接口 2.0暂时支持tcp和http开发&#xff0c;两者传输json数据是一样的。如下介绍&#xff1a; 1.请求Lwr框架的数据内容如下 {"serverKey": "软件上设置的…

基于物理信息深度学习的交通状态估计:以LWR和CTM模型为例

1.文章信息 本次介绍的文章是2022年发表在IEEE Open Journal of Intelligent Transportation Systems的一篇名为《Physics-Informed Deep Learning for Traffic State Estimation: Illustrations With LWR and CTM Models》的文章&#xff0c;该文章应用物理信息深度学习方法估…

机器学习实战--局部加权线性回归(LWR)

一 概述 通常情况下的线性拟合不能很好地预测所有的值&#xff0c;因为它容易导致欠拟合&#xff08;under fitting&#xff09;&#xff0c;比如数据集是 一个钟形的曲线。而多项式拟合能拟合所有数据&#xff0c;但是在预测新样本的时候又会变得很糟糕&#xff0c;因为它导…

机器学习与算法(8)--局部加权学习算法(LWR)

局部加权学习算法&#xff08;LWR&#xff09; 局部加权回归&#xff08;LWR&#xff09;是非参数学习方法。 首先参数学习方法是这样一种方法&#xff1a;在训练完成所有数据后得到一系列训练参数&#xff0c;然后根据训练参数来预测新样本的值&#xff0c;这时不再依赖之前的…

局部加权回归

通常情况下的线性拟合不能很好地预测所有的值&#xff0c;因为它容易导致欠拟合&#xff08;under fitting&#xff09;&#xff0c;比如数据集是 一个钟形的曲线。而多项式拟合能拟合所有数据&#xff0c;但是在预测新样本的时候又会变得很糟糕&#xff0c;因为它导致数据的 …

冲击波理论

冲击波理论 冲击波理论&#xff08;the kinematic wave theory&#xff0c;也称LWR理论&#xff09;最初是由Lighthill, M. J和Whitham, G. B. 以及Richards, P. I. 于上世纪50年代提出的。该理论假设车流是一种类似于水流的运动&#xff0c;可以通过流量、密度和速度之间的关…