SQL-分组聚合
-- 语法
select * |列名|表达式 -- 5
from 表名 -- 1
where 条件 -- 2
group by 列名 -- 3
having 条件 -- 4
order by 列名 [asc/desc] -- 6
报错 不是group by表达式
查询字段跟分组字段不一致
分组字段要与查询字段保持一致
除了分组字段其他字段都要聚合
count里面null不做统计
-- 案例
select e.deptno
,e.job -- 需要的字段
,avg(e.sal) as avg_sal -- 表达式
from emp e -- 从emp表中取数据
where e.deptno <> 10 -- 制定过滤的规则
group by e.deptno,e.job -- 将数据分组
having avg(e.sal) > 1500 -- 分组后二次过滤
order by e.deptno; -- 分组排序
sum 求和
avg 求平均
max 最大
min 最小
count 统计 -- select count(1) from emp;
having 过滤
-- where筛选信息
'=' 等于、赋值
'>' 大于
'<' 小于
'<=' 小于等于
'>=' 大于等于
'<>' 不等于
-- 查询顺序
1.from
2.where
3.group by / 聚合
4.having
5.select
6.order by
语法解析,为什么顺序是这样的:
1. 先要确定从那张表取数据
2. 过滤掉不想要的数据
3. 对数据进行分组
4. 分组之后过滤出自己需要的数据
5. 查出自己需要的字段
6. 最后对数据进行排序,适合自己分析数据的顺序
-- 给表达式命别名
select sum(e.sal) as sum_sal
,avg(e.sal) as avg_sal
,max(e.sal) as max_sal
,min(e.sal) as min_sal
from emp e;
-- 字段别名不可以是不连续的字符
select avg(e.sal) as Summation sal
解决方法为: select avg(e.sal) as "Summation sal"
from emp e;
-- 字符字段可以用来求大小 不能用来相加或者求平均
-- 报错原因为:不是group by表达式
-- 数据分组之后每一组只有一条数据,每一组对应的job有多个值 它不知道把谁放进来,所以报错。
select e.deptno
,e.job
,avg(e.sal) as avg_sal
from emp e
group by e.deptno;
-- group by 去重
select e.deptno,e.job
from emp e
group by e.deptno,e.job;
-- 多字段分组聚合
select e.deptno
,e.job
,avg(e.sal) as avg_sal
from emp e
group by e.deptno,e.job;
-- 多字段分组聚合过滤
select e.deptno
,e.job
,avg(e.sal) as avg_sal
from emp e
group by e.deptno,e.job
having avg(e.sal) > 1500;
SQL-分组聚合的更多相关文章
- SQL分组聚合查询练习(SQL Server和Oracle相似)20190514
先建表 CREATE TABLE [dbo].[orderdt_jimmy]( ,) NOT NULL, [order_nid] [int] NOT NULL, ) NOT NULL, [qty] [ ...
- sql字段合并与分组聚合
http://blog.csdn.net/cuixianlong/article/details/74024846 1 字段合并 原始数据如下:表名为Employee ID FirstName Las ...
- Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终端打印SQL语句,脚本调试)
Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终 ...
- SQL Server 聚合函数算法优化技巧
Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...
- Atitit 数据存储的分组聚合 groupby的实现attilax总结
Atitit 数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a.标量聚合 流聚合1 1.2. b.哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计 ...
- 05. 取SQL分组中的某几行数据
对表中数据分组,有时只需要某列的聚合值:有时却需要返回整行数据,常用的方法有:子查询.ROW_NUMBER.APPLY,总体感觉还是ROW_NUMBER比较直观.测试数据: if OBJECT_ID( ...
- ORACLE字符串分组聚合函数(字符串连接聚合函数)
ORACLE字符串连接分组串聚函数 wmsys.wm_concat SQL代码: select grp, wmsys.wm_concat(str) grp, 'a1' str from dual un ...
- SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表
SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 2013-10-09 23:09 by BI Wor ...
- 取SQL分组中的某几行数据
取SQL分组中的某几行数据 对表中数据分组,有时只需要某列的聚合值:有时却需要返回整行数据,常用的方法有:子查询.ROW_NUMBER.APPLY,总体感觉还是ROW_NUMBER比较直观.测试数据: ...
- 微软BI 之SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表
基于数据仓库上的 SSRS 报表展示,一般可以直接通过 SQL 查询,存储过程,视图或者表等多种方式将数据加载并呈现在报表中.但是如果是基于 Cube 多维数据集的数据查询,就不能再使用 SQL 的语 ...
随机推荐
- react native 中 fetch获取请求头header 的token信息
首先说一句,所有请求,都要带一个token信息,很难受啊,我目前直接将token信息放在global下自定的属性里面.(本地存储Storage和AsyncStorage,取一下,好麻烦) global ...
- Linux 第九章( 网卡配置,双网卡绑定,密钥,管理远程会话 )
/etc/hosts.allow 允许 //默认是先匹配允许在匹配拒绝 /etc/hosts.deny 拒绝 service iptables save //保存iptables配置 ...
- HashMap问题
package com.google; import javax.lang.model.element.NestingKind; import java.util.HashMap; public cl ...
- 1,docker遇到的问题1
pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txtfor /f %% ...
- C#消息泵探索(二)
引言: 上篇文章里简单的解释了C#的消息泵原理,这里我们以winform为例详细地了解一下实现代码. 底层实现 [DllImport(ExternDll.User32, ExactSpelling ...
- 2022-11-19学习内容-Server端代码编写-Client端代码编写
1.Server端代码编写 1.1UserDBHelper.java package com.example.chapter07_server.database; import android.con ...
- twenty four
vue基础代码 <script src="vue路径"></script> <script> const vm = new Vue({ //el ...
- mysql in和find_in_set
一.查询包含","的列 1.如果查询条件包含单引号 用in 如:select * from t_test where names in ('李红'); 只能查询出names列中值为 ...
- Unity实现手机录音功能
using UnityEngine;using System.Collections;public class MicPhoneScripts : MonoBehaviour{ private ...
- Linux安装证书
Linux安装 vCenter root CA: 1.访问vCenter管理页面,下载"下载受信任的根 CA 证书" 2.压缩文件内带有数字作为扩展名(.0..1 等)的文件是根证 ...