SQL小技巧3:分层汇总

前几天,QQ学习群有个小伙伴问我一个使用SQL分层汇总的问题。

今天正好分享下。

需求描述

在数据报表开发的工作中,经常会遇到需要对数据进行分组汇总的情况。

假设有一个销售数据表sales,包含列region(地区)、month(月份),以及sales_amount(销售金额)。

模型结构及样例数据如下:

create table sales(    region varchar(20),    month varchar(20),    amount decimal(10,2));
insert into sales values('北京','10月',12.26);insert into sales values('深圳','10月',12.26);insert into sales values('上海','10月',12.26);insert into sales values('北京','11月',12.26);insert into sales values('深圳','11月',12.26);insert into sales values('上海','11月',12.26);

假如,需要计算每个地区每个月的销售总额,并且还要计算每个地区整体的销售总额。也就是说,在查询出明细数据的同时,还要计算出不同层次的小计和总计。

是不是很复杂繁琐?

如果使用多个SQL语句,那么可以按层次GROUP BY汇总,最后把每层汇总结果UNION ALL起来。

可是,如果层次很多呢?是不是需要写很多个SQL才能拼接出最终的结果?

这时候,使用RULLUP函数,可以让我们轻松实现这个需求。

RULLUP函数的基本语法

先了解一下RULLUP函数的含义及其基本语法。

RULLUP是一种分组函数,用于生成分层次的汇总报表。它可以按照指定的列或表达式进行分组,并计算出每个分组的汇总值。

在ORACLE数据库中(其他数据库也有类似写法),RULLUP函数的基本语法如下:

SELECT 列1, 列2, 列3, ..., 列n, 聚合函数(列) FROM 表名 GROUP BY 列1, 列2, 列3, ..., 列n WITH ROLLUP;

在上面的语法中,可以指定需要进行分组的列(可以是多列)以及要进行汇总计算的列(使用聚合函数,如SUM、COUNT等)。然后,将需要分层汇总的列放在GROUP BY的ROLLUP函数中,就可以启用RULLUP功能。

RULLUP函数的使用示例

对于文章开头分层计算销售额的需求,可以使用如下SQL语句实现:

select    region,    month,    sum(amount)from salesgroup by rollup(region,month) ;

上面的SQL,我已经在SQL在线运行网站SQL Fiddle中运行通过。截图如下:

图片

从上面的结果可以看到,ROLLUP函数不仅生成了地区的小计,最后还生成了总计。而且,数据还按地区及月份自动做了排序,是不是很智能、很贴心。

关于SQL在线运行网站,省去了我们安装数据库,搭建环境的烦恼,而且还有多种数据库可以使用,真的是非常方便,简直是SQL新手必备。我已经在之前的文章中有过介绍了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/242039.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

验收支撑-软件项目验收计划书

软件项目验收计划的作用主要有以下几点: 确保项目质量:通过项目验收,客户或相关方可以对项目的成果进行全面、系统的评估,以确保项目达到预期的质量标准。发现和解决问题:在项目开发过程中,难免会存在一些问…

SpringBoot程序打包失败处理

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…

产品入门第三讲:Axure产品流程图绘制

📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​​​​ 🌟在这里,我要推荐给大家我的专栏《Axure》。🎯🎯 🚀无论你是编程小白,还…

AE (3)_主观亮度和对比度调试

#灵感# 画面的亮度、对比度是最直接,观看者最先获得的感受。所以有必要花时间认真调整。 ------哈哈,虽然调试的时间其实不如磨清晰度多。 目录 举个图例: 三个参数AE、gamma、LTM: 调试顺序: 举个图例&#xff1…

【Hadoop_06】MapReduce的概述与wc案例

1、MapReduce概述1.1 MapReduce定义1.2 MapReduce优点1.3 MapReduce缺点1.4 MapReduce核心思想1.5 MapReduce进程1.6 常用数据序列化类型1.7 源码与MapReduce编程规范 2、WordCount案例实操2.1 本地测试2.2 提交到集群测试 1、MapReduce概述 1.1 MapReduce定义 MapReduce是一…

WhatsApp获客怎么做?教你五个技巧!

随着全球通信的普及,WhatsApp已经成为人们日常生活中不可或缺的沟通工具,对于跨境电商和外贸企业来说,利用WhatsApp进行获客同样具有巨大的潜力。 那么,如何有效地在WhatsApp上获取客户呢?接下来,我们将为你介绍五个…

Linux系统解决“Key was rejected by service”

Linux系统下加载驱动模块出现如上错误提示的原因为:此驱动未经过签名。 方法一、关闭Secure Boot 如果是物理机,需要开机进入BIOS,找到“Secure Boot”的选项,然后关闭。 如果是虚拟机,可以打开虚拟设置&#xff0c…

物联网与低代码:构建智能化的连接世界

物联网(IoT)是指通过互联网将各种物理设备、传感器、车辆等连接起来,从而实现数据交互和智能化控制的技术领域。而低代码开发平台则是一种快速构建应用程序的方法,通过简化开发过程,使开发人员能够更迅速地实现创意和创…

Nginx【通俗易懂】《中篇》

目录 1.Url重写rewrite 2.防盗链 3.静态资源压缩 4.跨域问题 1.Url重写rewrite 🤩🤩🤩 1.1.rewrite书写格式 rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到rep…

MS913/914 25-100MHz 10/12 位用于平面显示器链路Ⅲ的具有直流平衡编码和双向控制通道的串化器和解串器

MS913/MS914 芯片组是 25MHz~100MHz 10 位/12 位 FPD Link III SER/DES(串化器/解串器),它提供高速 FPD-Link III 接口和高速正向通路以及用于差分对上数据发送的双向 控制通路。广泛应用于车载摄像,医疗设备,管道探测等领 域。 主要特点…

【强化学习-读书笔记】有限马尔可夫决策过程

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. BartoMDP 是强化学习问题在数学上的理想化形式,因为在这个框架下我们可以进行精确的理论说明 智能体与环境的交互 智能体与环境交互,会得到轨迹&…

你真的了解Shiro框架吗?

关注公众号回复20231110获取最新网络安全以及内网渗透等资料。 文章目录 关注公众号回复20231110获取最新网络安全以及内网渗透等资料。Shiro的核心架构Shiro中的认证认证shiro中认证的关键对象 认证流程调试认证流程Shiro的加密过程Shiro中的解密过程总结 Shiro的核心架构 Shi…

ResourceSat2卫星数据下载

印度5米遥感卫星数据开放下载 简介 印度国家遥感中心( NRSC )于近期开放了ResourceSat2卫星的LISS4传感器的数据下载权限,最高分辨率为5米。此次可供下载的有3个波段(近红外/红/绿),下载附带3个GeoTIFF和一个元数据文件&#xf…

计算4*4*4空间中2点结构的分布

不考虑两点距离的情况下,3维空间中的两点最多只有7种位置关系。3条边,3条面对角线,1条体对角线。现在向4*4*4的3维空间中随机的扔2个石子,比较7种结构的占比。 得到表格为 1 96 0.0476 2 96 0.0476 3 288 0.1429 4 288 …

Linux 多版本php ,切换默认版本

1.查看当前默认php版本 ls -l /usr/bin/php 后面的 /usr/local/php/bin/php 表示默认版本 2.查看现在安装了多少版本的php ,可以用 find / -name php 然后切换到到 7.3 版本上 使用命令:ln -sf /usr/local/php7.3/bin/php /usr/bin/php 如果没…

玩转Docker(一):容器生态系统

文章目录 一、核心技术二、平台技术三、支持技术 本文结构如下: 一、核心技术 容器核心技术是指能够让Container在host上运行起来的那些技术。 (1)容器规范 容器不光是Docker,还有其他容器,比如CoreOS的rkt。为了保证…

「Verilog学习笔记」可置位计数器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule count_module(input clk,input rst_n,input set,input [3:0] set_num,output reg [3:0]number,output reg zero);reg [3:0] cnt ; always (posed…

AR眼镜_AR智能眼镜整机硬件方案定制

AR眼镜的主要模块包括显示、光学模组、传感器和摄像头、主板、音频和网络连接等。其中,光学显示、主板处理器是决定AR眼镜成本的关键,光机占整体AR眼镜成本43%、处理器占整体成本31%。 AR眼镜的主板设计难点在于尺寸要足够小且要处理好散热问题。主板上的…

VideoComposer:Compositional video synthesis with motion controllability

1.Introduction composer提出了一种一组合性为中心的新的生成范式,能够通过各种输入条件组合生成图像,但是composer主要在空间维度上考虑多级条件。视频复杂的时间结构,其在保持不同帧之间的时间连续性的同时展现出大幅度的时间动态变化。Vi…

【syncfusion】SfGridSplitter 踩坑

SfGridSplitter 是 syncfusion提供的分割线&#xff0c;配合Grid使用可以改变布局大小&#xff1a; <Grid Grid.Row"1"><Grid.ColumnDefinitions><ColumnDefinition Width"1.4*"/><ColumnDefinition MinWidth"10"/><…
最新文章