SQL grouping sets 子句

2023-11-03

grouping sets子句允许你指定多个group by 选项。增强了group by 的功能。
可以通过一条select 语句实现复杂繁琐的多条select 语句的查询。并且更加的
高效,解析存储一条SQL于语句。 下面通过使用 grouping sets 子句与没有
使用grouping sets 子句来对比学习该子句。
查询每个部门的每类工作的平均工资, 使用grouping sets的语句。
SQL> select department_id,job_id,avg(salary)
  2  from hr.employees
  3  group by grouping sets ((department_id,job_id));
DEPARTMENT_ID JOB_ID     AVG(SALARY)
------------- ---------- -----------
          110 AC_ACCOUNT        8300
           80 SA_REP         7909.09091
           90 AD_VP                  17000
           50 ST_CLERK               2785
          110 AC_MGR              12000
           50 ST_MAN                 7280
           80 SA_MAN              12200
           50 SH_CLERK              3215
没有使用grouping sets 的对等语句。
SQL> select department_id,job_id,avg(salary)
  2  from hr.employees
  3  group by department_id,job_id;
DEPARTMENT_ID JOB_ID     AVG(SALARY)
------------- ---------- -----------
          110 AC_ACCOUNT        8300
           80 SA_REP          7909.09091
           90 AD_VP                   17000
           50 ST_CLERK                2785
          110 AC_MGR               12000
           50 ST_MAN                 7280
           80 SA_MAN              12200
           50 SH_CLERK             3215
再查询每个部门每类工作平均工资的基础上,还要查询出每个部门的平均工资。 使用grouping sets的语句。
SQL> select department_id,job_id,avg(salary)
  2  from hr.employees
  3  group by grouping sets ((department_id,job_id),department_id);
DEPARTMENT_ID JOB_ID     AVG(SALARY)
------------- ---------- -----------
           10 AD_ASST              4400# 每个部门每类工作的平均工资。
           10                              4400# 每个部门的平均工资。
           20 MK_MAN           13000
           20 MK_REP               6000
           20                             9500
           30 PU_MAN           11000
           30 PU_CLERK           2780
           30                             4150
           40 HR_REP               6500
没有使用grouping sets 的对等语句。
SQL> select department_id,job_id,avg(salary)
  2  from hr.employees
  3  group by (department_id,job_id)
  4  union
  5  select department_id,null,avg(salary)
  6  from hr.employees
  7  group by department_id;
DEPARTMENT_ID JOB_ID     AVG(SALARY)
------------- ---------- -----------
           10 AD_ASST              4400
           10                              4400
           20 MK_MAN           13000
           20 MK_REP               6000
           20                             9500
           30 PU_CLERK           2780
           30 PU_MAN           11000
           30                             4150
           40 HR_REP               6500
SQL> select department_id,job_id,avg(salary)
  2  from hr.employees
  3  group by grouping sets ((department_id,job_id),department_id,());
DEPARTMENT_ID JOB_ID     AVG(SALARY)
------------- ---------- -----------
           10 AD_ASST              4400
           10                              4400
           20 MK_MAN           13000
           20 MK_REP               6000
           20                             9500
           30 PU_MAN           11000
           30 PU_CLERK          2780
再查询每个部门每类工作平均工资与查询出每个部门的平均工资 的基础上,还要查询整个企业中雇员的平均工资。 使用grouping sets的语句。
SQL> select department_id,job_id,avg(salary)
  2  from hr.employees
  3  group by grouping sets ((department_id,job_id),department_id,()); #() 表示做一个整体的聚集。
DEPARTMENT_ID JOB_ID     AVG(SALARY)
------------- ---------- -----------
           10 AD_ASST              4400
           10                              4400
           20 MK_MAN           13000
           20 MK_REP               6000
           20                             9500
           30 PU_MAN           11000
           30 PU_CLERK           2780
                                              。
                                              。
                                              。
                                 6380.90909 #这一行查询的是整个employees 中雇员总的平均工资。
没有使用grouping sets 的对等语句。
SQL> select department_id,job_id,avg(salary)
  2  from hr.employees
  3  group by (department_id,job_id)
  4  union
  5  select department_id,null,avg(salary)
  6  from hr.employees
  7  group by department_id
  8  union 
  9  select null,null,avg(salary)
 10  from hr.employees;
DEPARTMENT_ID JOB_ID     AVG(SALARY)
------------- ---------- -----------
           10 AD_ASST              4400
           10                              4400
           20 MK_MAN           13000
           20 MK_REP               6000
           20                              9500
           30 PU_CLERK            2780
           30 PU_MAN           11000
           30                             4150
           40 HR_REP               6500
                                              。
                                              。
                                              。
                                6380.90909 #这一行查询的是整个employees 中雇员总的平均工资。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL grouping sets 子句 的相关文章

  • MySQL - 重命名列

    如何重命名 mysql 列help to content在我的桌子上tbl help mysql query ALTER TABLE tbl help CHANGE COLUMN help content 您必须在更改列语句中包含列的定义
  • 在 MySQL 5.6 中重置 ROOT 密码

    我一直在关注这些说明 http dev mysql com doc refman 5 6 en resetting permissions html用于重置root本地安装的密码MySQL 5 6在 Windows 7 笔记本电脑上 我停止
  • 如何解决 MySQL Workbench 上的这些行错误?

    正如您所看到的 我的代码中没有语法错误或类似的错误 你们能帮我吗 我想这只是错误标记机制中的一个小错误 尝试编辑代码或关闭此编辑器并打开一个新编辑器 如果您有重现此问题的步骤列表 您甚至可以创建一个错误报告 http bugs mysql
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • sqlalchemy 中的随机 ID(pylon)

    我正在使用 pylons 和 sqlalchemy 我想知道如何将一些随机 id 作为primary key 最好的方法是使用随机生成的 UUID import uuid id uuid uuid4 uuid 数据类型在某些数据库中本机可用
  • MAMP Python-MySQLdb 问题:调用 Python 文件后 libssl.1.0.0.dylib 的路径发生变化

    我正在尝试使用 python MySQLdb 访问 MAMP 服务器上的 MySQL 数据库 当我最初尝试使用 python sql 调用 Python 文件来访问 MAMP 上的数据库时 我得到了image not found关于错误li
  • 启动服务器后,带有sequelize的Nodejs无法在mysql工作台中创建表

    我开始学习如何使用构建 Rest APINodejs Expressjs Sequelize and MySQL using Mysqlworkbench 我的问题 启动服务器后 该表不是由Sequelize并且没有表Mysqlworkbe
  • 脚本超时已过,如果要完成导入,请重新提交相同的文件,导入将恢复

    我有一个数据库 拉开拉链后的尺寸50mb拉链尺寸7mb所以当我尝试导入数据库时zipped 7mb 几分钟后 它抛出此错误 脚本超时已过 如果您想完成导入 请resubmit相同的文件和导入将恢复 我已经重新提交了 但仍然没有导入全部数据
  • 防止重复数据输入mysql数据库

    我试图让我的电子邮件订阅服务拒绝数据库中已存在的电子邮件 这样用户就不会订阅同一封电子邮件两次 这就是我所拥有的 但它不起作用 有什么想法吗
  • 如何自动更新数据库中的记录?

    我有一个工作表 在其中插入新工作 该表还包含职位发布日期 默认情况下 当发生新插入时 作业状态为打开状态 现在 当作业超过 30 天时 我想将作业状态从开放更改为关闭 我该怎么做 尝试创建一个每天运行的事件 如下所示 CREATE EVEN
  • 哈希密码字段使用什么数据类型以及长度?

    我不确定密码哈希是如何工作的 稍后将实现 但现在需要创建数据库模式 我正在考虑将密码限制为 4 20 个字符 但据我了解 加密后哈希字符串的长度将有所不同 那么 如何将这些密码存储在数据库中呢 更新 仅使用哈希函数不足以存储密码 你应该阅读
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • Delphi XE5 FireDAC 错误:无法加载供应商库 [libmysql.dll 或 libmysqld.dll]

    我在 Windows 7 64 位上使用 Delphi XE5 只是尝试 FireDAC 组件 我正在使用一个 TFDConnection 组件连接到本地 MySQL 数据库 v5 6 15 我已经将 libmysql dll 32位 v5
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • MySQL 将表的校验和存储在另一个表中

    语境 我们有包含大量表的大型数据库 他们中的大多数 99 都使用innodb 我们希望有一个日常流程来监视哪个表已被修改 当他们使用 innodb 的值时Update time from SHOW table STATUS from inf
  • 如何在 MySQL 中启用严格 sql_mode?

    我怎样才能启用严格sql mode在 MySQL 中 我想从 SQL 中获取数据并在中处理相同的数据strict mode 我现在的sql mode is mysql gt SELECT sql mode sql mode NO ENGIN
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • 如何绑定值 INSERT INTO mysql perl

    我有下面的代码可以工作 但我需要知道如何绑定它们以确保安全 如果我只是将 new row 替换为 并将其放入执行中我收到错误 感谢您的帮助 foreach my field account field order new row param
  • 如何更新 MySQL 数据库中的两列?

    这不起作用 UPDATE customers SET firstname John AND lastname Smith WHERE id 1 用逗号分隔值 AND是一个逻辑运算符 它的位置是WHERE and ON条款 UPDATE cu

随机推荐

  • java实现postman中form-data传参方式

    postman中几种传参方式区别 1 form data form data主要是以键值对的形式来上传参数 同时参数之间以 分隔符分开 同时也可以上传文件 文件上传要指定文件类型 具体可以看下面的图 2 x www form urlenco
  • 电脑低配,电脑配置低怎么办 如何让电脑运行速度加快

    电脑配置低怎么办 有一些电脑由于配置比较低 所以电脑的运行速度就会变的很慢 如果想要加快电脑在运行时候的速度 那么就需要在硬件或者软件上面进行优化或者提升 那么今天小编就从几个方面来解决配置低的电脑应该如何加快电脑的运行速度 电脑配置低怎么
  • xman 厦门邀请赛 pwn1 babystack writeup

    题目描述 这个题目针对现在的我还是有点难度的 花费了我三天的时间 最后发现原因竟是因为字符转化为整型的过程中多加了好多0 分析思路 1 首先查看文件的详细信息 tucker ubuntu xman pwn pwn1 file babysta
  • MySQL(五)——MySQL索引优化实战(多表联查优化)

    系列文章目录 MySQL 一 索引底层数据结构与算法 MySQL 二 Explain详情与索引最佳实践 MySQL 三 MySQL的内部组件结构及bin log归档 MySQL 四 MySQL索引优化实战 MySQL 五 MySQL索引优化
  • C++ static数据成员和函数

    static 在类的构造函数里初始化static变量显然是不合理的 其实我们可以在类中对static成员变量初始化的 就是使用关键字const进行修饰 只有静态整型常量才能在类中初始化 static const 与const static是
  • 【ArcPy视频教程】基于 ArcGIS Pro 的 ArcPy 教程(录制中)

    Arcpy视频教程 基于 ArcGIS Pro 的 ArcPy 教程 录制中 视频合集 基础01 环境搭建 基础02 几何和游标 上 基础02 几何和游标 下 实例01 网络图商API 上 实例01 网络图商API 下 实例01 网络图商A
  • 数据可视化笔记5 时间数据可视化

    文章目录 时间数据的趋势性 周期性 季节性 随机波动 时间序列数据特征 时间数据可视化设计的三个维度 时间数据可视化图形类型 离散时间数据可视化 连续时间数据可视化 概括 时间数据的趋势性 周期性 季节性 随机波动 时间序列差分 分解 相关
  • 【Linux】shell脚本实战-if多分支条件语句详解

    前言 前面我们已经学习过单分支语句和双分支语句的使用 双分支语句就是在单分支语句的基础上又加了一层结果项 今天我们来探讨下多分支语句 顾名思义 多分支语句就是在双分支语句基础上又加了一个可能性的结果 如果你还没有学习单双分支条件语句 建议参
  • [1121]dependency中的classifier属性

    classifier元素用来帮助定义构件输出的一些附属构件 附属构件与主构件对应 比如主构件是 kimi app 2 0 0 jar 该项目可能还会通过使用一些插件生成 如 kimi app 2 0 0 javadoc jar kimi a
  • 深入研究java.lang.Runtime类

    转自 http lavasoft blog 51cto com 62575 15565 一 概述 Runtime类封装了运行时的环境 每个 Java 应用程序都有一个 Runtime 类实例 使应用程序能够与其运行的环境相连接 一般不能实例
  • Java学习笔记33——特殊操作流

    特殊操作流 特殊操作流 标准输入输出流 打印流 字节打印流 字符打印流 用字符打印流改进复制Java文件 对象序列化流 对象序列化流 对象反序列化流 对象序列化流的三个问题 Properties Properties作为Map集合的使用 P
  • 全连接神经网络、卷积神经网络

    全连接神经网络 卷积神经网络 前言 全连接神经网络 介绍 结构 损失函数 梯度下降 链式法则 反向传播 总结 卷积神经网络 背景 结构 卷积 Convolution 池化 Max Pooling 激活机制 Example 风格迁移 前言 刚
  • 【华为OD机试c++】We are a team(C++ Python Java)2023 B卷

    题目描述 总共有 n 个人在机房 每个人有一个标号 1 lt 标号 lt n 他们分成了多个团队 需要你根据收到的 m 条消息判定指定的两个人是否在一个团队中 具体的 消息构成为 a b c 整数 a b 分别代表两个人的标号 整数 c 代
  • java整合spark迁移hive数据到mongo

    1 SparkSession配置 SparkSession sparkSession SparkSession builder appName hive mongo master local enableHiveSupport config
  • IDEA创建SpringBoot项目并整合SSM+Redis

    1 创建SpringBoot项目 1 File gt New gt Project 选择Spring Initiatilizr 2 点击下一步 填入相应的GroupId 选择Java Version等 在选择下一步 3 选择包依赖 如果只是
  • 【Linux入门之密码登陆】centOS密码输入正确却登陆不上,原来是我误会了

    搜索Linux修改密码 出来的基本都是修改root用户的密码 而我的GUI界面一打开显示的用户列表里是普通用户 每次登陆我都使用我刚改好的root密码 自然密码错误 无法登陆 我还跑到百度搜 centOS密码输入正确却登陆不上 等等相似的描
  • springboot项目热部署

    快捷键Ctrl Alt Shift 选Registry 勾选下面这个 然后 apply一下 pom xml
  • sc不是内部命令也不是外部命令处理方法

    sc不是内部命令也不是外部命令 用户环境变量里path里加上 SystemRoot system32
  • 【小沐学写作】程序员必备技能:在线协作文档汇总

    文章目录 1 简介 2 微软Office在线文档 2 1 功能简介 2 2 使用费用 2 3 用户体验 3 石墨文档 3 1 功能简介 3 2 使用费用 4 腾讯文档 4 1 功能简介 4 2 使用费用 5 语雀 5 1 功能简介 5 2
  • SQL grouping sets 子句

    grouping sets子句允许你指定多个group by 选项 增强了group by 的功能 可以通过一条select 语句实现复杂繁琐的多条select 语句的查询 并且更加的 高效 解析存储一条SQL于语句 下面通过使用 grou