-- 语法

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. 用C++写的文件字符数、单词数以及总行数的统计(源码)

    #include <stdio.h> #include <fstream> #include <string> using namespace std; //计算单 ...

  2. js获取对象数组中指定属性值的新数据

    例: let arr = [ {name: "name1", age: "1",type:"1"}, {name: "name2& ...

  3. pytest设计项目结构

    api目录封装所有的接口 testcases目录写所有的测试用例.conftest全局登录前置操作 data目录测试数据 common或者utils目录.存放公共模块比如读取yml文件.连接数据库.所 ...

  4. 基于Kotlin和Canvas的跨终端设计

    背景 js弱类型非常混乱,不适合开发超过2w行代码的独立应用(普通Web除外) Web端和桌面端是主流工具应用的生存地 Canvas又是一个新兴的领域,能够提供多种多样的工具支持 设计一个基于Canv ...

  5. Spring Boot应用启动

    1.Eclipse 中启动Spring Boot应用 右键应用程序启动类, Run As Java Application 2.maven 命令: mvn spring-boot:run 在应用程序启 ...

  6. 统信系统部署es

    rpm -ivh jdk-17.0.4.1_linux-x64_bin.rpm groupadd es && useradd -d /home/es -g es estar -xzvf ...

  7. (K8s学习笔记三)创建Namespace

    Namespace(命名空间)很多情况下用于实现多租户的资源隔离.Namespace通过将集群内部的资源对象"分配"到不同的Namespace中,形成逻辑上分为不同项目.小组或用户 ...

  8. php8.0.0新功能:Match表达式

    Match表达式是基于值的一致性进行分支计算.它的比较是严格比较.Match表达式从php8.0.0起可用.示例代码: 1 $key = 'key_1'; 2 $value = match($key) ...

  9. div+css CSS基本

        • css 高度(height) • css 宽度(width)   · • css 边框(border)   · • css 背景(background)   · • css 浮动(floa ...

  10. .net基础—多线程(二)

    Thread 在.NET中最早提供的控制线程类型的类型:System.Threading.Thread类.使用该类型可以直观地创建.控制和结束线程.下面是一个简单的多线程程序: static void ...