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 ...
随机推荐
- git修改历史提交的备注信息
1 git checkout '版本分支号' && git rebase -i 5bce64d^ (或者 git rebase -i HEAD ~4) //5bce64d 是 ...
- vue input输入框关键字筛选检索列表数据展示
想必大家在项目开发中难免会用到关键字筛选的功能,正好这次项目有需求要做这一块,就整理一下vue的input输入框输入关键字检索数据列表的代码.下面直接上代码: html: <!-- 筛选demo ...
- 前端之Vue day07 混入、插件、elementui、Router、Vuex
一.Props补充 1.父传子在子组件标签上起自定义属性 使用数组 就不演示了,太简单了 2.限制传入的数据类类型 使用对象 同样,展示过的 3.props补充 就是套对象,加以限制 props:{ ...
- (0617 ) centos7运行脚本提示: 没有那个文件或目录 :No such file or directory
https://blog.csdn.net/hehuihh/article/details/88174007 之前也 遇到: https://www.cnblogs.com/fancy2333/p/1 ...
- [部署日记]Android Studio在安装完后,sdk依旧提示SDK emulator directory is missing
问题起源: 今天在闲着没事搞了个go的rest-api,用postman测试了一下可行,于是一拍大腿决定写一个安卓手机程序,于是一拍大腿重新下载了卸载没多久因为没空间放原神的Android Studi ...
- python中的KeyError报错
from util import str_util #业务逻辑:兼容不同的结构体:resCode转化数据 #检查字典中是否存在键 if 'resCode' not in resultJson if ' ...
- 解决504 GATEWAY TIMEOUT Nginx网关超时
最近遇到一个问题504 GATEWAY TIMEOUT的问题,在浏览器的NetWork里面看是这个效果.时间大概是60s. 修改nginx配置 目前后端技术架构主要是nginx和php-fpm,前端主 ...
- 【运维】解决composer update出现的Discard changes [y,n,v,d,s,?]的问题
在PHP项目中,composer是一个使用非常普遍的包管理工具,在本地开发的时候出现了这个问题一搬来说问题不大,可以人为进行输入交互,但是如果是自动化发布中出现,就会等待输入导致卡住,是一个需要解决的 ...
- 模型admin 外键的相关操作
....@admin.register(MyModel)class MyModelAdmin(admin.ModelAdmin): def method(self, request, queryset ...
- 从零搭建hadoop集群之hadoop集群安装
1.集群规划 HDSF YARN hadoop01 NanemNode(主机点),DataNode NodeManager hadoop02 DataNode, SecondaryNamenode ...