oracle job队列数,oracle 队列合计统计,请高手赐教

oracle 行列合计统计,请高手赐教

酒店值日表

id 主键

roomNum  房间号

people  值日人

time     值日时间

数据  /*有时一个房间需要联合值日,对于联合值日的,每个人统计项分别记录一次*/(房间号,值日人数量不定)

id      roomNum      people      time

1            2                A          2014-1-4

2            3                A,B       2014-1-10

3            4                B,C       2014-1-13

4            5                D          2014-1-18

5            1                E          2014-2-9

6            10              A,C,D    2014-2-14

7            3                A,E       2014-2-18

要实现的统计结果(以上表做全统计,统计不同值日人对不同房间值日次数)

房间号            A          B         C          D         合计

1

2               1                                               1

3               2          1                                   3

4                           1          1                       2

5                                                   1           1

6

7

8

9

10              1                      1           1          3

合计            4          2           2           2

------解决思路----------------------

select roomnum,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,A,%' then 1 end) A,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,B,%' then 1 end) B,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,C,%' then 1 end) C,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,D,%' then 1 end) D,

sum(length(people)-length(replace(people,','))+1) "合计"

from 酒店值日表

group by roomnum

order by roomnum;

------解决思路----------------------

WITH T AS

(

SELECT 1 ID,2 ROOMNUM,'A' PEOPLE,TO_DATE('2014-01-04','YYYY-MM-DD') TIME FROM DUAL UNION ALL

SELECT 2 ID,3 ROOMNUM,'A,B' PEOPLE,TO_DATE('2014-01-10','YYYY-MM-DD') TIME FROM DUAL UNION ALL

SELECT 3 ID,4 ROOMNUM,'B,C' PEOPLE,TO_DATE('2014-01-13','YYYY-MM-DD') TIME FROM DUAL UNION ALL

SELECT 4 ID,5 ROOMNUM,'D' PEOPLE,TO_DATE('2014-01-18','YYYY-MM-DD') TIME FROM DUAL UNION ALL

SELECT 5 ID,1 ROOMNUM,'E' PEOPLE,TO_DATE('2014-02-09','YYYY-MM-DD') TIME FROM DUAL UNION ALL

SELECT 6 ID,10 ROOMNUM,'A,C,D' PEOPLE,TO_DATE('2014-02-14','YYYY-MM-DD') TIME FROM DUAL UNION ALL

SELECT 7 ID,3 ROOMNUM,'A,E' PEOPLE,TO_DATE('2014-02-18','YYYY-MM-DD') TIME FROM DUAL

)

SELECT TT.*,

A + B + C + D TOTAL FROM (SELECT T2.ROOM,

(SELECT COUNT(*)

FROM T

WHERE T.ROOMNUM = T1.ROOMNUM

AND T.PEOPLE LIKE '%A%') A,

(SELECT COUNT(*)

FROM T

WHERE T.ROOMNUM = T1.ROOMNUM

AND T.PEOPLE LIKE '%B%') B,

(SELECT COUNT(*)

FROM T

WHERE T.ROOMNUM = T1.ROOMNUM

AND T.PEOPLE LIKE '%C%') C,

(SELECT COUNT(*)

FROM T

WHERE T.ROOMNUM = T1.ROOMNUM

AND T.PEOPLE LIKE '%D%') D

FROM T T1,

(SELECT MIN_ROOM + LEVEL - 1 ROOM

FROM (SELECT MIN(ROOMNUM) MIN_ROOM,

MAX(ROOMNUM) MAX_ROOM

FROM T)

CONNECT BY MIN_ROOM + LEVEL - 1 <=

MAX_ROOM) T2

WHERE T2.ROOM = T1.ROOMNUM(+)) TT ORDER BY ROOM;

------解决思路----------------------

select roomnum,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,A,%' then 1 end) A,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,B,%' then 1 end) B,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,C,%' then 1 end) C,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,D,%' then 1 end) D,

sum(case when ','

------解决思路----------------------

people

------解决思路----------------------

',' like '%,E,%' then 1 end) E,

sum(length(people)-length(replace(people,','))+1) "合计"

from 酒店值日表

group by roomnum

order by roomnum;

合计项算法没变啊

11g后可以使用sum(rexexp_count(people,'[^,]+')) 合计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值