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 ...
随机推荐
- ubuntu配置docker全局系统代理
(1)添加用户到docker用户组 sudo groupadd docker sudo gpasswd -a kang docker (注销系统当前用户,再次登录) #检查是否添加到组 cat /et ...
- pytorch的三种量化方式详解
pytorch的三种量化方式详解 这篇博客详细介绍了pytorch官方教程提到的三种量化方式的原理,详细解释了三种量化方式的区别: 1. 静态量化 :torch.quantize_per_tensor ...
- Raid磁盘阵列更换磁盘时另一块盘离线恢复案例(v7000存储数据恢复)
Raid磁盘阵列更换磁盘时另一块盘离线恢复案例(v7000存储数据恢复) [故障描述]客户设备型号为IBM V7000存储,架构为AIX+oracle+V7000存储阵列柜,需要恢复的数据主要存放在阵 ...
- 带有关键词的行 txt文本处理
原本的代码(只筛选出来自己要的)([python]文本处理:删除包含关键词的行.删除指定列.删除指定字符.替换关键字--_bandaoyu的博客-CSDN博客_python 删除csv还有特定词语的某 ...
- 【C++】之前学习C++没有注意到的点或者学到了冷知识(待补充)
1.string和c_str() string str = "hello"; const char* cstr = str.c_str(); str = "yep,i m ...
- expect语言使用之自动切换账户或自动登录远程服务器
资料来源: (1) https://baike.baidu.com/item/expect/4598715?fr=aladdin (2) https://blog.csdn.net/gsjthxy/a ...
- 攻防世界-easyphp(前导数字字符串、数字字符串、数字弱类型比较)
一道php代码审计题,利用了字符与数字弱类型比较的漏洞. 一.基础知识 数字字符串 形如数字形式的字符串叫做数字字符串,例如:'123456','1e56112'(科学计数法),'123.4'(单纯的 ...
- 提交from表单,method与浏览器请求显示不一致
<from method="post" action ="/login_check"> 用户名:<input type="text& ...
- 思科IPsecVPN建立
实验拓扑 实验目标: 1.不配置中间的三个路由器的路由实现router0和router2的vpn隧道 2.PC0能够ping通PC1 实验IP预定: PC0 10.1.1.1/24 PC1 20.1. ...
- 如何从相机拍照建立的Fileprovider中获取绝对路径
我们通过高版本获取的fileprovider,然后拍了个照片,如下 imageUri = FileProvider.getUriForFile 但是我们发现当我们 File file = new Fi ...