oracle聚合函数及行专列,pivot rollup cube
1、原始数据

--方法-:
--以单位分组,计算每类特殊情况的合计以及按照单位的小计数
with a as
(SELECT b.szfz,
case when tsqk is not null then tsqk else -1 end tsqk1,
sum(tsqksl) tsqksl
FROM stat_tsqk_dw b
group by rollup(szfz, tsqk))
select * from a pivot(sum(tsqksl) for tsqk1 in(32, 33, 34, 35, 36, -1))
union
--计数合计列,计算所有单位的各类特殊情况合计数
select '' szfz, b.*
from (select case when tsqk is not null then tsqk else -1 end tsqk1,
sum(tsqksl) tsqksl
from stat_tsqk_dw a
group by cube(tsqk)) PIVOT(SUM(TSQKSL) FOR TSQK1 IN(32,
33,
34,
35,
36,
-1)) b
结果

数据表结构
-- Create table
create table STAT_TSQK_DW
(
tjsj VARCHAR2(20) not null,
hjlx NUMBER(4) not null,
sglx NUMBER(4) not null,
sjlx NUMBER(4) not null,
szfz VARCHAR2(16) not null,
tsqk NUMBER(4) not null,
qxyy NUMBER(4) not null,
tsqksl NUMBER(9),
qxyysl NUMBER(9)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64
next 1
minextents 1
maxextents unlimited
);
-- Add comments to the table
comment on table STAT_TSQK_DW
is '统计-出车特殊情况-单位/特殊情况';
-- Add comments to the columns
comment on column STAT_TSQK_DW.tjsj
is '统计时间(粒度分钟)';
comment on column STAT_TSQK_DW.hjlx
is '呼叫类型';
comment on column STAT_TSQK_DW.sglx
is '事故类型';
comment on column STAT_TSQK_DW.sjlx
is '事件类型';
comment on column STAT_TSQK_DW.szfz
is '所在分站';
comment on column STAT_TSQK_DW.tsqk
is '特殊情况';
comment on column STAT_TSQK_DW.qxyy
is '取消原因';
comment on column STAT_TSQK_DW.tsqksl
is '特殊情况数量';
comment on column STAT_TSQK_DW.qxyysl
is '取消原因数量';
-- Create/Recreate primary, unique and foreign key constraints
alter table STAT_TSQK_DW
add constraint PK_STAT_TSQK_DW primary key (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
数据:
prompt Importing table STAT_TSQK_DW...
set feedback off
set define off
insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 04:01:00', 10, 10, 10, '3309000108', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 23:26:00', 10, 10, 10, '3309000213', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 11:39:00', 10, 10, 10, '3309000108', -9999, 100, 0, 1); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-19 10:38:00', 10, 10, 10, '3309000108', -9999, 100, 0, 1); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 11:17:00', 50, 10, 10, '3309000108', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 01:56:00', 10, 10, 10, '3309000307', 36, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 17:50:00', 10, 10, 10, '3309000101', 34, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 02:49:00', 10, 10, 10, '3309000213', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 10:12:00', 10, 10, 10, '3309000213', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 07:23:00', 10, 10, 10, '3309000309', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 01:25:00', 10, 10, 10, '3309000106', 33, 0, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-19 10:52:00', 60, 10, 10, '3309000108', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 14:44:00', 10, 10, 10, '3309000309', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 16:50:00', 10, 10, 10, '3309000302', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 07:41:00', 10, 10, 10, '3309000106', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 17:04:00', 10, 10, 10, '3309000302', 35, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 15:22:00', 10, 10, 10, '3309000101', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 18:24:00', 10, 10, 10, '3309000108', 1000, 140, 1, 1); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 02:16:00', 10, 10, 10, '3309000108', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 12:14:00', 10, 10, 10, '3309000111', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 18:01:00', 10, 10, 10, '3309000312', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 12:41:00', 10, 10, 10, '3309000310', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 00:47:00', 10, 10, 10, '3309000213', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 02:00:00', 10, 10, 10, '3309000309', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 19:08:00', 60, 10, 10, '3309000302', 35, 0, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 03:04:00', 10, 10, 10, '3309000101', 33, -9999, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-18 19:08:00', 60, 10, 10, '3309000307', 35, 0, 1, 0); insert into STAT_TSQK_DW (TJSJ, HJLX, SGLX, SJLX, SZFZ, TSQK, QXYY, TSQKSL, QXYYSL)
values ('2018-09-17 21:53:00', 10, 10, 10, '3309000302', 35, -9999, 1, 0); prompt Done.
oracle聚合函数及行专列,pivot rollup cube的更多相关文章
- oracle 聚合函数 LISTAGG ,将多行结果合并成一行
LISTAGG( to_char(Item_Category_Name), ',') WITHIN GROUP(ORDER BY Item_Category_Name) -- 将 Item_Cate ...
- Oracle 聚合函数
聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 此处采用Oracle 11g中其他用户SCOTT中的EMP表,进行演示. –COUNT:统计行数量 COUNT(*)统计的是结果集的 ...
- oracle聚合函数avg()注意点
avg:用avg函数进行平均运算时会忽略空值(即最终出现的平均值不对[如果原始数据中存在空值的话]),可以这样子来解决:avg(nvl(comm,0))或者sum(comm)/count(*)---- ...
- ORACLE聚合函数细节
select * from emp order by mgr; 概要 select count(1), --14 sum(1), --14 count(*), --14 count(distinct ...
- oracle聚合函数XMLAGG用法简介
XMLAGG函数语法基本如图,可以用于列转行,列转行函数在oracle里有好几种方法,wm_concat也可以做 这里介绍wm_concat是因为XMLAGG实现效果和wm_concat是一样的,只是 ...
- Oracle聚合函数
max(),min(),avg(),sum() 其中 avg(),sum()只能操作数字 , max(),min()能操作数字.日期.字母 等.
- Spark基于自定义聚合函数实现【列转行、行转列】
一.分析 Spark提供了非常丰富的算子,可以实现大部分的逻辑处理,例如,要实现行转列,可以用hiveContext中支持的concat_ws(',', collect_set('字段'))实现.但是 ...
- SQL——连接查询、聚合函数、开窗函数、分组功能、联合查询、子查询
连接查询 inner join,用的最多,表示多张表一一对应 聚合函数 操作行数据,进行合并 sum.avg.count.max.min 开窗函数 将合并的数据分布到原表的每一行,相当于多出来了一列, ...
- SQL Server 2008 R2——PIVOT 行转列 以及聚合函数的选择
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
随机推荐
- uva1632 (区间DP)
题意:有n个宝藏,在x轴上,每个宝藏在某个时间会消失,问最少吃完所有宝藏的时间是多少,否则输出no solution 分析:区间DP,f[i][j][01]代表i到j区间内的全部吃完,停留在左/右端, ...
- python基础之dict和set
dict dict是dictionary的缩写,python内置了字典,在其他语言中也称为map,使用键值对储存,具有极快的查找速度. 如果是只用list来实现,就需要两个list,先在第一个list ...
- HDU 5299 Circles Game 博弈论 暴力
Circles Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5299 Description There are n circles on ...
- mysql语句总结
mysql语句总结 -- 1,通过windows提供的服务管理来完成 -- services.msc -- 2,dos下的命令来完成 -- 停止 -- net stop mysql -- 启动 -- ...
- Shared libraries with GCC on Linux
转:http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html By anduril462 Libraries are a ...
- Linux(CentOS)下squid代理服务器配置-五岳之巅
squid是linux下的一款代理服务器软件,他可以共享网络 ,加快访问速度,节约通信带宽,同时防止内部主机受到攻击,限制用户访问,完善网络管理 rpm -qa|grep squidyum insta ...
- FORM - FILE.EXPORT 导出功能
对于数据块项,是不用添加任何触发器就可以使用导出功能的. 如果不能使用该功能,可能是由于在需要使用导出功能的块上添加了block级触发器when-new-item-instance,但执行层次为&qu ...
- JAVA常见算法题(二十九)
package com.forezp.util; import java.util.Scanner; /** * 判断输入的5个字符串的最大长度,并输出 * * * @author Administr ...
- EasyUI datagrid 双击行事件
1.EasyUI 实现点击行的任何位置,触发事件 onLoadSuccess:function(data){ } , pagination : false, //双击事件 onDblClickRow: ...
- Git 学习(一)简介及安装
Git 简介及安装 Git是目前世界上最先进的分布式版本控制系统(没有之一).它的诞生也颇具传奇,Linux创始人Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!有兴趣的话,可 ...