-- 语法

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-分组聚合的更多相关文章

  1. SQL分组聚合查询练习(SQL Server和Oracle相似)20190514

    先建表 CREATE TABLE [dbo].[orderdt_jimmy]( ,) NOT NULL, [order_nid] [int] NOT NULL, ) NOT NULL, [qty] [ ...

  2. sql字段合并与分组聚合

    http://blog.csdn.net/cuixianlong/article/details/74024846 1 字段合并 原始数据如下:表名为Employee ID FirstName Las ...

  3. Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终端打印SQL语句,脚本调试)

    Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终 ...

  4. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  5. Atitit  数据存储的分组聚合 groupby的实现attilax总结

    Atitit  数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a.标量聚合 流聚合1 1.2. b.哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计 ...

  6. 05. 取SQL分组中的某几行数据

    对表中数据分组,有时只需要某列的聚合值:有时却需要返回整行数据,常用的方法有:子查询.ROW_NUMBER.APPLY,总体感觉还是ROW_NUMBER比较直观.测试数据: if OBJECT_ID( ...

  7. ORACLE字符串分组聚合函数(字符串连接聚合函数)

    ORACLE字符串连接分组串聚函数 wmsys.wm_concat SQL代码: select grp, wmsys.wm_concat(str) grp, 'a1' str from dual un ...

  8. SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表

    SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 2013-10-09 23:09 by BI Wor ...

  9. 取SQL分组中的某几行数据

    取SQL分组中的某几行数据 对表中数据分组,有时只需要某列的聚合值:有时却需要返回整行数据,常用的方法有:子查询.ROW_NUMBER.APPLY,总体感觉还是ROW_NUMBER比较直观.测试数据: ...

  10. 微软BI 之SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表

    基于数据仓库上的 SSRS 报表展示,一般可以直接通过 SQL 查询,存储过程,视图或者表等多种方式将数据加载并呈现在报表中.但是如果是基于 Cube 多维数据集的数据查询,就不能再使用 SQL 的语 ...

随机推荐

  1. OS-lab1

    OS-lab1 boot boot文件夹中只有start.S文件,这个文件用于初始化内核.关掉中断,设置内核栈,并跳转到main函数. init init.c 执行初始化操作. main.c 主函数, ...

  2. Python的入门学习Day 14~15——form”夜曲编程“

    Day 14 time: 2021.8.11. ​ 原文再续,输接上一回.在数据结构之上,我们又开启了新一章"循环"的学习.而今天,我们首先学习了"for"循环 ...

  3. SpringBoot为什么这么火?

    1.  总的设计原则是""默认大于配置"" 2. Starter机制,开箱即用,默认的配置和依赖都是默认加载的 3. SpringBoot是Spring的子类, ...

  4. linux查找服务位置

  5. vscode远程连接服务器出现Bad owner or permissions on .ssh/config

    vscode远程连接服务器出现Bad owner or permissions on C:\\Users\USER\.ssh/config 过程试图写入的管道不存在, 原因是vscode的remoto ...

  6. uniapp获取本机所有应用包名

    huoqu(e){ uni.showLoading({ title: '获取中' }); const main = plus.android.runtimeMainActivity(); let pM ...

  7. KMS服务器 激活win 和 office

    环境:Debian 9.5 (Google Cloud) 切换到root用户:sudo su wget --no-check-certificate https://github.com/teddys ...

  8. SQL自动生成表结构Excel说明文档

    针对已经存在表结构,快速生成整理表结构文档. SELECT字段中文名 = isnull(G.[value],''),字段名 = A.name,类型 = B.name,标识 = Case When CO ...

  9. 记录解决方案(sqlserver篇)

    一个月的补卡次数不超过三次(即统计一个月内某人的补卡次数) 表结构是某人一天内的四次打卡状态,这样是统计当月补卡的天数了(错误) select count(*) from [Proc_HR_Punch ...

  10. DataTable操作汇总

    1.排序 DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("Age" ...