oracle聚合函数及行专列,pivot rollup cube

前端之家收集整理的这篇文章主要介绍了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,QXYY,TSQKSL,QXYYSL)
values (‘2018-09-18 04:01:00‘,10,‘3309000108‘,-9999,1,0);

insert into STAT_TSQK_DW (TJSJ,QXYYSL)
values (‘2018-09-17 23:26:00‘,‘3309000213‘,QXYYSL)
values (‘2018-09-18 11:39:00‘,100,1);

insert into STAT_TSQK_DW (TJSJ,QXYYSL)
values (‘2018-09-19 10:38:00‘,QXYYSL)
values (‘2018-09-18 11:17:00‘,50,QXYYSL)
values (‘2018-09-17 01:56:00‘,‘3309000307‘,QXYYSL)
values (‘2018-09-17 17:50:00‘,‘3309000101‘,QXYYSL)
values (‘2018-09-17 02:49:00‘,QXYYSL)
values (‘2018-09-18 10:12:00‘,QXYYSL)
values (‘2018-09-18 07:23:00‘,‘3309000309‘,QXYYSL)
values (‘2018-09-18 01:25:00‘,‘3309000106‘,QXYYSL)
values (‘2018-09-19 10:52:00‘,60,QXYYSL)
values (‘2018-09-17 14:44:00‘,QXYYSL)
values (‘2018-09-18 16:50:00‘,‘3309000302‘,QXYYSL)
values (‘2018-09-18 07:41:00‘,QXYYSL)
values (‘2018-09-17 17:04:00‘,QXYYSL)
values (‘2018-09-17 15:22:00‘,QXYYSL)
values (‘2018-09-18 18:24:00‘,1000,140,QXYYSL)
values (‘2018-09-17 02:16:00‘,QXYYSL)
values (‘2018-09-17 12:14:00‘,‘3309000111‘,QXYYSL)
values (‘2018-09-18 18:01:00‘,‘3309000312‘,QXYYSL)
values (‘2018-09-18 12:41:00‘,‘3309000310‘,QXYYSL)
values (‘2018-09-18 00:47:00‘,QXYYSL)
values (‘2018-09-17 02:00:00‘,QXYYSL)
values (‘2018-09-18 19:08:00‘,QXYYSL)
values (‘2018-09-17 03:04:00‘,QXYYSL)
values (‘2018-09-17 21:53:00‘,0);

prompt Done.

猜你在找的Oracle相关文章