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 行转列 以及聚合函数的选择
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
随机推荐
- 【混合背包】CDOJ1606 难喝的饮料
#include<cstdio> #include<algorithm> using namespace std; int n,V,op[20010],c[20010],w[2 ...
- JS解决URL传递参数中文乱码问题
function getUrlParam(name){ // 用该属性获取页面 URL 地址从问号 (?) 开始的 URL(查询部分) var url = window.location.search ...
- Java高级架构师(一)第37节:反向代理和动静分离的实现
http协议->server->location 输入http:locahost:80/ 进入百度的界面. 做负载转发测试.路径已经转发,可能一些协议已经屏蔽了,导致内容出不来. 关于负载 ...
- mysql知识点汇总四
1.表的垂直分割 “垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的.(以前,在银行做过项目,见过一张表有100多个字段,很恐怖) 示例一:在 ...
- TJSONTableObject跨平台解析JSON
TJSONTableObject跨平台解析JSON USES SynCrossPlatformJSON TSQLRecordPeoplePersistent = class(TPersistent) ...
- appium+python自动化46-安装app三种方式
前言 adb安装 1.在app自动化之前,首先手机上有要被测试的app,如何把电脑本地上的app安装到手机上呢?可以在运行自动化代码前,在cmd输入adb指令,把电脑app安装到手机上 adb ins ...
- Linux下的基础命令
在容器环境中很多时候要确定底层操作系统是什么和什么版本,网上找了一把,发现了一些比较有用的命令,从其他地方转过来,参考 # uname -a # 查看内核/操作系统/CPU信息 # head -n / ...
- ylbtech-LanguageSamples-PartialTypes(部分类型)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-PartialTypes(部分类型) 1.A,示例(Sample) 返回顶部 “分部类型 ...
- 更改"xxxx" 的权限: 不允许的操作
[摘要:做为root用户,用chmod为何改没有了文件权限 以ROOT用户上岸,当用chmod改文件权限时,体系表现无权变动,为何 文件名是:aa chmod 777 aa chmod: changi ...
- JQuery选择器中的一些注意事项
1. 选择器中含有特殊符号的注意事项 1. 1 选择器中含有",","#","("或"]"等特殊字符 根据w3c的规定, ...