PHP code: JSSWEB> select city, product, year, sum(sales) 2 from tmp1 3 group by city, rollup(product, year) 4 ; CITY PRODUCT YEAR SUM(SALES) -------------------- -------------------- ---------- ---------- 北京 冰箱 2000 1212 北京 冰箱 1999 2323 北京 冰箱 2001 7676 北京 冰箱 11211 北京 彩电 2000 2500 北京 彩电 1999 3000 北京 彩电 2001 4500 北京 彩电 10000 北京 微波炉 2000 7000 北京 微波炉 1999 800 北京 微波炉 2001 333 北京 微波炉 8133 北京 29344 天津 冰箱 2000 8987686 天津 冰箱 1999 324324 天津 冰箱 2001 768678 天津 冰箱 10080688 天津 彩电 2000 434343 天津 彩电 1999 212121 天津 彩电 2001 564566 天津 彩电 1211030 天津 微波炉 2000 232 天津 微波炉 1999 23432 天津 微波炉 2001 34234 天津 微波炉 57898 天津 11349616 26 rows selected --
JSSWEB> select city, product, year, sum(sales) 2 from tmp1 3 group by city, rollup(product, year) 4 ; CITY PRODUCT YEAR SUM(SALES) -------------------- -------------------- ---------- ---------- 北京 冰箱 2000 1212 北京 冰箱 1999 2323 北京 冰箱 2001 7676 北京 冰箱 11211 北京 彩电 2000 2500 北京 彩电 1999 3000 北京 彩电 2001 4500 北京 彩电 10000 北京 微波炉 2000 7000 北京 微波炉 1999 800 北京 微波炉 2001 333 北京 微波炉 8133 北京 29344 天津 冰箱 2000 8987686 天津 冰箱 1999 324324 天津 冰箱 2001 768678 天津 冰箱 10080688 天津 彩电 2000 434343 天津 彩电 1999 212121 天津 彩电 2001 564566 天津 彩电 1211030 天津 微波炉 2000 232 天津 微波炉 1999 23432 天津 微波炉 2001 34234 天津 微波炉 57898 天津 11349616 26 rows selected --
PHP code: JSSWEB> select city, 2 product, 3 year, 4 sales, 5 decode(product, 6 '彩电', 7 decode(year, 2000, sales, 2001, sales, 0), 8 '微波炉', 9 decode(year, 2000, sales, 0)) ns 10 from tmp1; CITY PRODUCT YEAR SALES NS -------------------- -------------------- ---------- ---------- ---------- 北京 彩电 1999 3000 0 北京 彩电 2000 2500 2500 北京 彩电 2001 4500 4500 北京 微波炉 1999 800 0 北京 微波炉 2000 7000 7000 北京 微波炉 2001 333 0 北京 冰箱 1999 2323 北京 冰箱 2000 1212 北京 冰箱 2001 7676 天津 彩电 1999 212121 0 天津 彩电 2000 434343 434343 天津 彩电 2001 564566 564566 天津 微波炉 1999 23432 0 天津 微波炉 2000 232 232 天津 微波炉 2001 34234 0 天津 冰箱 1999 324324 天津 冰箱 2000 8987686 天津 冰箱 2001 768678 18 rows selected --
JSSWEB> select city, 2 product, 3 year, 4 sales, 5 decode(product, 6 '彩电', 7 decode(year, 2000, sales, 2001, sales, 0), 8 '微波炉', 9 decode(year, 2000, sales, 0)) ns 10 from tmp1; CITY PRODUCT YEAR SALES NS -------------------- -------------------- ---------- ---------- ---------- 北京 彩电 1999 3000 0 北京 彩电 2000 2500 2500 北京 彩电 2001 4500 4500 北京 微波炉 1999 800 0 北京 微波炉 2000 7000 7000 北京 微波炉 2001 333 0 北京 冰箱 1999 2323 北京 冰箱 2000 1212 北京 冰箱 2001 7676 天津 彩电 1999 212121 0 天津 彩电 2000 434343 434343 天津 彩电 2001 564566 564566 天津 微波炉 1999 23432 0 天津 微波炉 2000 232 232 天津 微波炉 2001 34234 0 天津 冰箱 1999 324324 天津 冰箱 2000 8987686 天津 冰箱 2001 768678 18 rows selected --
PHP code: JSSWEB> select city, 2 nvl(product, '彩电+微波炉') product, 3 nvl(year, 2002) year, 4 decode(product, 5 '彩电', 6 nvl2(year, sum(sales), sum(ns)), 7 '微波炉', 8 nvl2(year, sum(sales), sum(ns)), 9 null, 10 sum(ns), 11 sum(sales)) sales 12 from (select city, 13 product, 14 year, 15 sales, 16 decode(product, 17 '彩电', 18 decode(year, 2000, sales, 2001, sales, 0), 19 '微波炉', 20 decode(year, 2000, sales, 0)) ns 21 from tmp1) a 22 group by city, rollup(product, year) 23 having sum(ns) is not null or year is not null 24 order by 1, 2, 3; CITY PRODUCT YEAR SALES -------------------- -------------------- ---------- ---------- 北京 冰箱 1999 2323 北京 冰箱 2000 1212 北京 冰箱 2001 7676 北京 彩电 1999 3000 北京 彩电 2000 2500 北京 彩电 2001 4500 北京 彩电 2002 7000 北京 彩电+微波炉 2002 14000 北京 微波炉 1999 800 北京 微波炉 2000 7000 北京 微波炉 2001 333 北京 微波炉 2002 7000 天津 冰箱 1999 324324 天津 冰箱 2000 8987686 天津 冰箱 2001 768678 天津 彩电 1999 212121 天津 彩电 2000 434343 天津 彩电 2001 564566 天津 彩电 2002 998909 天津 彩电+微波炉 2002 999141 天津 微波炉 1999 23432 天津 微波炉 2000 232 天津 微波炉 2001 34234 天津 微波炉 2002 232 24 rows selected --
JSSWEB> select city, 2 nvl(product, '彩电+微波炉') product, 3 nvl(year, 2002) year, 4 decode(product, 5 '彩电', 6 nvl2(year, sum(sales), sum(ns)), 7 '微波炉', 8 nvl2(year, sum(sales), sum(ns)), 9 null, 10 sum(ns), 11 sum(sales)) sales 12 from (select city, 13 product, 14 year, 15 sales, 16 decode(product, 17 '彩电', 18 decode(year, 2000, sales, 2001, sales, 0), 19 '微波炉', 20 decode(year, 2000, sales, 0)) ns 21 from tmp1) a 22 group by city, rollup(product, year) 23 having sum(ns) is not null or year is not null 24 order by 1, 2, 3; CITY PRODUCT YEAR SALES -------------------- -------------------- ---------- ---------- 北京 冰箱 1999 2323 北京 冰箱 2000 1212 北京 冰箱 2001 7676 北京 彩电 1999 3000 北京 彩电 2000 2500 北京 彩电 2001 4500 北京 彩电 2002 7000 北京 彩电+微波炉 2002 14000 北京 微波炉 1999 800 北京 微波炉 2000 7000 北京 微波炉 2001 333 北京 微波炉 2002 7000 天津 冰箱 1999 324324 天津 冰箱 2000 8987686 天津 冰箱 2001 768678 天津 彩电 1999 212121 天津 彩电 2000 434343 天津 彩电 2001 564566 天津 彩电 2002 998909 天津 彩电+微波炉 2002 999141 天津 微波炉 1999 23432 天津 微波炉 2000 232 天津 微波炉 2001 34234 天津 微波炉 2002 232 24 rows selected --
PHP code: JSSWEB> select * from TMP1 2 MODEL 3 PARTITION BY (city) DIMENSION BY (product, year) 4 MEASURES (sales sal) 5 RULES 6 (sal['彩电', 2002] = sal['彩电', 2001] + sal['彩电', 2000], 7 sal['微波炉', 2002] = sal['微波炉', 2000], 8 sal['彩电+微波炉', 2002] = (sal['彩电',2002]+sal['微波炉',2002])) 9 ORDER BY 1,2,3 10 ; CITY PRODUCT YEAR SAL -------------------- -------------------- ---------- ---------- 北京 冰箱 1999 2323 北京 冰箱 2000 1212 北京 冰箱 2001 7676 北京 彩电 1999 3000 北京 彩电 2000 2500 北京 彩电 2001 4500 北京 彩电 2002 7000 北京 彩电+微波炉 2002 14000 北京 微波炉 1999 800 北京 微波炉 2000 7000 北京 微波炉 2001 333 北京 微波炉 2002 7000 天津 冰箱 1999 324324 天津 冰箱 2000 8987686 天津 冰箱 2001 768678 天津 彩电 1999 212121 天津 彩电 2000 434343 天津 彩电 2001 564566 天津 彩电 2002 998909 天津 彩电+微波炉 2002 999141 天津 微波炉 1999 23432 天津 微波炉 2000 232 天津 微波炉 2001 34234 天津 微波炉 2002 232 24 ro
JSSWEB> select * from TMP1 2 MODEL 3 PARTITION BY (city) DIMENSION BY (product, year) 4 MEASURES (sales sal) 5 RULES 6 (sal['彩电', 2002] = sal['彩电', 2001] + sal['彩电', 2000], 7 sal['微波炉', 2002] = sal['微波炉', 2000], 8 sal['彩电+微波炉', 2002] = (sal['彩电',2002]+sal['微波炉',2002])) 9 ORDER BY 1,2,3 10 ; CITY PRODUCT YEAR SAL -------------------- -------------------- ---------- ---------- 北京 冰箱 1999 2323 北京 冰箱 2000 1212 北京 冰箱 2001 7676 北京 彩电 1999 3000 北京 彩电 2000 2500 北京 彩电 2001 4500 北京 彩电 2002 7000 北京 彩电+微波炉 2002 14000 北京 微波炉 1999 800 北京 微波炉 2000 7000 北京 微波炉 2001 333 北京 微波炉 2002 7000 天津 冰箱 1999 324324 天津 冰箱 2000 8987686 天津 冰箱 2001 768678 天津 彩电 1999 212121 天津 彩电 2000 434343 天津 彩电 2001 564566 天津 彩电 2002 998909 天津 彩电+微波炉 2002 999141 天津 微波炉 1999 23432 天津 微波炉 2000 232 天津 微波炉 2001 34234 天津 微波炉 2002 232 24 ro
PHP code: JSSWEB> select a.*, 2 rownum rn, 3 decode(a, lag(a, 1, a) over(order by rownum), 0, 1) na 4 from tmp2 a 5 ; A B C RN NA ---------- ---------- ---------- ---------- ---------- 1 2 3 1 0 1 4 5 2 0 1 3 6 3 0 2 3 3 4 1 1 5 7 5 1 2 5 8 6 1 1 6 9 7 1 1 2 3 8 0 1 4 5 9 0 1 3 6 10 0 10 rows selected --
JSSWEB> select a.*, 2 rownum rn, 3 decode(a, lag(a, 1, a) over(order by rownum), 0, 1) na 4 from tmp2 a 5 ; A B C RN NA ---------- ---------- ---------- ---------- ---------- 1 2 3 1 0 1 4 5 2 0 1 3 6 3 0 2 3 3 4 1 1 5 7 5 1 2 5 8 6 1 1 6 9 7 1 1 2 3 8 0 1 4 5 9 0 1 3 6 10 0 10 rows selected --
PHP code: JSSWEB> select b.*, sum(na) over(order by rn) so 2 from (select a.*, 3 rownum rn, 4 decode(a, lag(a, 1, a) over(order by rownum), 0, 1) na 5 from tmp2 a) b 6 ; A B C RN NA SO ---------- ---------- ---------- ---------- ---------- ---------- 1 2 3 1 0 0 1 4 5 2 0 0 1 3 6 3 0 0 2 3 3 4 1 1 1 5 7 5 1 2 2 5 8 6 1 3 1 6 9 7 1 4 1 2 3 8 0 4 1 4 5 9 0 4 1 3 6 10 0 4 10 rows selected --
JSSWEB> select b.*, sum(na) over(order by rn) so 2 from (select a.*, 3 rownum rn, 4 decode(a, lag(a, 1, a) over(order by rownum), 0, 1) na 5 from tmp2 a) b 6 ; A B C RN NA SO ---------- ---------- ---------- ---------- ---------- ---------- 1 2 3 1 0 0 1 4 5 2 0 0 1 3 6 3 0 0 2 3 3 4 1 1 1 5 7 5 1 2 2 5 8 6 1 3 1 6 9 7 1 4 1 2 3 8 0 4 1 4 5 9 0 4 1 3 6 10 0 4 10 rows selected --
PHP code: JSSWEB> select a,b,c from( 2 select c.*, count(so) over(partition by so) ct 3 from (select b.*, sum(na) over(order by rn) so 4 from (select a.*, 5 rownum rn, 6 decode(a, lag(a, 1, a) over(order by rownum), 0, 1) na 7 from tmp2 a) b) c 8 )where ct>=3 9 ; A B C ---------- ---------- ---------- 1 2 3 1 4 5 1 3 6 1 6 9 1 2 3 1 4 5 1 3 6 7 rows selected --
JSSWEB> select a,b,c from( 2 select c.*, count(so) over(partition by so) ct 3 from (select b.*, sum(na) over(order by rn) so 4 from (select a.*, 5 rownum rn, 6 decode(a, lag(a, 1, a) over(order by rownum), 0, 1) na 7 from tmp2 a) b) c 8 )where ct>=3 9 ; A B C ---------- ---------- ---------- 1 2 3 1 4 5 1 3 6 1 6 9 1 2 3 1 4 5 1 3 6 7 rows selected --
PHP code: JSSWEB> select level - 1 lv 2 from dual 3 connect by rownum <= 4 (select max(Months_between(end_date, start_date)) mb from test) 5 ; LV ---------- 0 1 2 3 4 --
JSSWEB> select level - 1 lv 2 from dual 3 connect by rownum <= 4 (select max(Months_between(end_date, start_date)) mb from test) 5 ; LV ---------- 0 1 2 3 4 --
PHP code: JSSWEB> select a.*, 2 Months_between(end_date, start_date) mb, 3 b.lv, 4 add_months(a.start_date, lv) am 5 from tmp3 a, 6 (select level - 1 lv 7 from dual 8 connect by rownum <= (select max(Months_between(end_date, start_date)) mb 9 from test t)) b 10 ; ID STATION START_DATE END_DATE MB LV AM ---------- -------------------- ----------- ----------- ---------- ---------- ----------- 1000 开发 2000-01-01 2000-04-01 3 0 2000-01-01 1000 测试 2000-07-01 2000-10-01 3 0 2000-07-01 1000 副经理 2001-01-01 2001-04-01 3 0 2001-01-01 1000 DBA 2000-02-01 2000-03-01 1 0 2000-02-01 1000 兼职经理 2000-03-01 2000-08-01 5 0 2000-03-01 1000 经理 2001-05-01 2001-08-01 3 0 2001-05-01 1000 开发 2000-01-01 2000-04-01 3 1 2000-02-01 1000 测试 2000-07-01 2000-10-01 3 1 2000-08-01 1000 副经理 2001-01-01 2001-04-01 3 1 2001-02-01 1000 DBA 2000-02-01 2000-03-01 1 1 2000-03-01 1000 兼职经理 2000-03-01 2000-08-01 5 1 2000-04-01 1000 经理 2001-05-01 2001-08-01 3 1 2001-06-01 1000 开发 2000-01-01 2000-04-01 3 2 2000-03-01 1000 测试 2000-07-01 2000-10-01 3 2 2000-09-01 1000 副经理 2001-01-01 2001-04-01 3 2 2001-03-01 1000 DBA 2000-02-01 2000-03-01 1 2 2000-04-01 1000 兼职经理 2000-03-01 2000-08-01 5 2 2000-05-01 1000 经理 2001-05-01 2001-08-01 3 2 2001-07-01 1000 开发 2000-01-01 2000-04-01 3 3 2000-04-01 1000 测试 2000-07-01 2000-10-01 3 3 2000-10-01 1000 副经理 2001-01-01 2001-04-01 3 3 2001-04-01 1000 DBA 2000-02-01 2000-03-01 1 3 2000-05-01 1000 兼职经理 2000-03-01 2000-08-01 5 3 2000-06-01 1000 经理 2001-05-01 2001-08-01 3 3 2001-08-01 1000 开发 2000-01-01 2000-04-01 3 4 2000-05-01 1000 测试 2000-07-01 2000-10-01 3 4 2000-11-01 1000 副经理 2001-01-01 2001-04-01 3 4 2001-05-01 1000 DBA 2000-02-01 2000-03-01 1 4 2000-06-01 1000 兼职经理 2000-03-01 2000-08-01 5 4 2000-07-01 1000 经理 2001-05-01 2001-08-01 3 4 2001-09-01 30 rows selected --
JSSWEB> select a.*, 2 Months_between(end_date, start_date) mb, 3 b.lv, 4 add_months(a.start_date, lv) am 5 from tmp3 a, 6 (select level - 1 lv 7 from dual 8 connect by rownum <= (select max(Months_between(end_date, start_date)) mb 9 from test t)) b 10 ; ID STATION START_DATE END_DATE MB LV AM ---------- -------------------- ----------- ----------- ---------- ---------- ----------- 1000 开发 2000-01-01 2000-04-01 3 0 2000-01-01 1000 测试 2000-07-01 2000-10-01 3 0 2000-07-01 1000 副经理 2001-01-01 2001-04-01 3 0 2001-01-01 1000 DBA 2000-02-01 2000-03-01 1 0 2000-02-01 1000 兼职经理 2000-03-01 2000-08-01 5 0 2000-03-01 1000 经理 2001-05-01 2001-08-01 3 0 2001-05-01 1000 开发 2000-01-01 2000-04-01 3 1 2000-02-01 1000 测试 2000-07-01 2000-10-01 3 1 2000-08-01 1000 副经理 2001-01-01 2001-04-01 3 1 2001-02-01 1000 DBA 2000-02-01 2000-03-01 1 1 2000-03-01 1000 兼职经理 2000-03-01 2000-08-01 5 1 2000-04-01 1000 经理 2001-05-01 2001-08-01 3 1 2001-06-01 1000 开发 2000-01-01 2000-04-01 3 2 2000-03-01 1000 测试 2000-07-01 2000-10-01 3 2 2000-09-01 1000 副经理 2001-01-01 2001-04-01 3 2 2001-03-01 1000 DBA 2000-02-01 2000-03-01 1 2 2000-04-01 1000 兼职经理 2000-03-01 2000-08-01 5 2 2000-05-01 1000 经理 2001-05-01 2001-08-01 3 2 2001-07-01 1000 开发 2000-01-01 2000-04-01 3 3 2000-04-01 1000 测试 2000-07-01 2000-10-01 3 3 2000-10-01 1000 副经理 2001-01-01 2001-04-01 3 3 2001-04-01 1000 DBA 2000-02-01 2000-03-01 1 3 2000-05-01 1000 兼职经理 2000-03-01 2000-08-01 5 3 2000-06-01 1000 经理 2001-05-01 2001-08-01 3 3 2001-08-01 1000 开发 2000-01-01 2000-04-01 3 4 2000-05-01 1000 测试 2000-07-01 2000-10-01 3 4 2000-11-01 1000 副经理 2001-01-01 2001-04-01 3 4 2001-05-01 1000 DBA 2000-02-01 2000-03-01 1 4 2000-06-01 1000 兼职经理 2000-03-01 2000-08-01 5 4 2000-07-01 1000 经理 2001-05-01 2001-08-01 3 4 2001-09-01 30 rows selected --
PHP code: JSSWEB> select count(unique am) 2 from (select Months_between(end_date, start_date) mb, 3 b.lv, 4 add_months(a.start_date, lv) am 5 from tmp3 a, 6 (select level - 1 lv 7 from dual 8 connect by rownum <= 9 (select max(Months_between(end_date, start_date)) mb 10 from test t)) b) c 11 where c.mb > lv 12 order by am; COUNT(UNIQUEAM) --------------- 15 --
JSSWEB> select count(unique am) 2 from (select Months_between(end_date, start_date) mb, 3 b.lv, 4 add_months(a.start_date, lv) am 5 from tmp3 a, 6 (select level - 1 lv 7 from dual 8 connect by rownum <= 9 (select max(Months_between(end_date, start_date)) mb 10 from test t)) b) c 11 where c.mb > lv 12 order by am; COUNT(UNIQUEAM) --------------- 15 --