SQL-分组聚合-子查询
-- having前面必须有group by
select e.deptno
,sum(e.sal) as sum_sal
,min(e.sal) as min_sal
,max(e.sal) as max_sal
,avg(e.sal) as avg_sal
,count(e.ename) as ct1
from emp e
group by e.deptno
having e.deptno = 20
;
-- 因为null值不做统计,所以用count(1)统计效率更高
select count(1) from emp;
-- 正序 asc 、 倒叙 desc
select *
from emp e
order by e.sal; --(asc/desc)
-- 指定空值的位置 (在前 nulls first)(在后 nulls last)
select *
from emp e
order by e.eomm nulls first;
-- group by 和 distinct 都是去重,但是group by还有分组聚合的职能。
-- primary key 主键约束 、 foreign key 外键
-- (一张表想要指向另一张表,需要设置主键外键)
-- 删除 先子后父 、 添加 先父后子
-- 关联 join...on... 是标准写法的固定语法 (内关联只显示关联得了的数据)
-- 关联的本质:从一张表中依次取一条数据和另一张表的每一条数据进行一次匹配
-- 内关联 (同一张表可以多次使用,例如 emp e 、 emp b)
select *
from emp e
join dept b on e.deptno = b.deptno;
-- 外关联 为了符合阅读习惯,只写左外 (主表数据不丢失)
select e.*,d.*
from emp e
left join dept d on e.deptno = d.deptno;
-- 关联的条件写在where后面就是取数条件,写在on后面则是关联条件
--(建议把条件写在on后面,这样性能好一点)
-- 多表关联 语法
select *
from emp a
join emp b on a.deptno = b.deptno
join emp c on a.deptno = b.deptno
join dept d on a.deptno = b.deptno;
-- 笛卡尔积 服务器突然变慢的原因之一
-- 子查询 (查询套查询)(子查询是可以单独执行的)
-- 单行子查询 不反回或返回一行结果的查询
-- 多行子查询 返回0行、一行或多行的查询
select -- 标量子查询 字段子查询
from -- 表子查询(把一个查询结果集视为一张表)
where -- 条件子查询 (子查询返回了两个值,条件用 = 会报错,用in 或 not in)
-- 子查询
select *
from emp e
where sal > ( select avg(sal) from emp);
-- 表子查询
select e.deptno,avg(sal) as avg_sal
from emp e
group by e.deptno;
-- 两个表关联起来就可以看成一张表,通过分组聚合取数
select *
from emp a
join (select e.deptno,avg(sal) as avg_sal from emp e group by e.deptno ) b -- 要给表达式命别名
on a.deptno = b.deptno
where a.sal > b.avg_sal;
-- 标量子查询
select e.*
,(select avg(sal) from emp) as avg_sal
,(select max(sal) from emp) as max_sal
from emp e;
-- 字段子查询这里返回了多个字段
select e.*
,(select avg(sal),max(sal) from emp) as avg_sal
from emp e;
-- 多行子查询
select *
from emp e
where e.sal in ( select sal from emp where ename in ('MARTIN','SCOTT') );
SQL-分组聚合-子查询的更多相关文章
- SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计 ...
- SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
拖了一个星期,终于开始写第三篇了.走起! 聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均 ...
- 1.4(SQL学习笔记)分组、子查询、联结、组合查询
一.分组 建表及数据填充语句下载:链接: https://pan.baidu.com/s/1WHYafwqKJEKq1kDwCH_Zlg 提取码: 3wy4 1.1初识分组 分组是按照某一列,将该列中 ...
- sql之独立子查询和相关子查询总结
1.独立子查询:顾名思义:就是子查询和外层查询不存在任何联系,是独立于外层查询的: 下面就看一个例子: 有一张订单表 Sales.Order 和一张 客户表 Sales.Customer 下面的sql ...
- SQL语句:子查询
一,子查询定义: 子查询就是嵌套在主查询中的查询. 子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 但并不是每个位置嵌套子 ...
- 【MySQL】-2 函数、分组、子查询、联合查询
函数 Mysql的函数特性没有SQL可移植性强. 大多数情况下支持的函数: 处理文本串的函数: RTrim():处理列值右边的空格 LTrim():处理列值左边的空格 Trim():处理列值的左右 ...
- Linq to SQL 语法整理(子查询 & in操作 & join )
子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c in ctx.Customers where (from o in ctx.Orders group o by ...
- SQL Server 数据库子查询基本语法
一.SQL子查询语句 1.单行子查询 select ename,deptno,sal from emp where deptno=(select deptno ...
- SQL Server 之 子查询与嵌套查询
当由where子句指定的搜索条件指向另一张表时,就需要使用子查询或嵌套查询. 1 子查询 子查询是一个嵌套在select.insert.update或delete语句或其他子查询中的查询.任何允许使用 ...
- SQL优化系列——子查询
sql调优方法: (1)not in子查询优化 尽量避免子查询select * from a where id not in(select id from b); select * from a wh ...
随机推荐
- 前端之Vue day08 Vue3项目搭建、setup、toRefs
一.Vue3 介绍 # 新项目使用vue3,有部分老项目使用vue2 # vue3 的变化 1.性能的提升 -打包大小减少41% -初次渲染快55%, 更新渲染快133% -内存减少54% 2.源码的 ...
- 剑指 Offer II 动态规划
088. 爬楼梯的最少成本 class Solution { public: int minCostClimbingStairs(vector<int>& cost) { int ...
- nignx 代理前端服务
说明:研发给了一个前端包,需要进行代理访问 前端包名:web 一.部署nginx服务 略 二.配置代理 2.1 将前端包放置任意目录,如/home/manage 2.2 修改nginx配置 [root ...
- kubectl --v日志级别
Kubectl 日志输出详细程度是通过 -v 或者 --v 来控制的,参数后跟了一个数字表示日志的级别.Kubernetes 通用的日志习惯和相关的日志级别在 这里 有相应的描述. 详细程度 描述-- ...
- Shiro 身份认证绕过漏洞 CVE-2022-32532
前言 Apache Shiro 是一个强大且易用的 Java 安全框架,通过它可以执行身份验证.授权.密码和会话管理.使用 Shiro 的易用 API,您可以快速.轻松地保护任何应用程序 -- 从最小 ...
- 极米投影仪安装apk的方法
https://www.touying.com/t-37871-1.html 方法二:使用U盘安装:1.使用电脑下载软件apk,并将软件apk的后缀修改为"apk1": 2.然后将 ...
- 【C和指针】6.指针
1.指针变量的内容 int a=112, b=-1; float c=3.14; int *d=&a; int *e=&c; (1) 变量d和e被声明为指针,并用其他变量的地址予以初始 ...
- 【git】2.1 获取git仓库
资料来源 (1) https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%B ...
- easyui 使用技巧
一:easyui treegrid重新加载数据 1:self.grid.treegrid('loadData', []);//清空数据 self.grid.queryParams({});//重新加载 ...
- DOS下的一些命令
DOS一些命令 1.查看无线密码 netsh wlan show profiles #显示所有本地电脑加入过的wlan netsh wlan show profiles name=&q ...