亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 5550 | 回復(fù): 16
打印 上一主題 下一主題

oracle分析析function --NB [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-06-21 20:20 |只看該作者 |倒序瀏覽
本帖最后由 yobyin 于 2010-06-22 22:08 編輯

搞幾個變態(tài)的報表...把多行轉(zhuǎn)成一行,按一個column的排序后取前30%名

多行轉(zhuǎn)一行
CREATE TABLE t_row_str(
ID INT,
col VARCHAR2(10));
INSERT INTO t_row_str VALUES(1,'a');
INSERT INTO t_row_str VALUES(1,'b');
INSERT INTO t_row_str VALUES(1,'c');
INSERT INTO t_row_str VALUES(2,'a');
INSERT INTO t_row_str VALUES(2,'d');
INSERT INTO t_row_str VALUES(2,'e');
INSERT INTO t_row_str VALUES(3,'c');
COMMIT;
SELECT * FROM t_row_str;
5.1
MAX + DECODE
適用范圍:8i,9i,10g及以后版本
SELECT id,
MAX(decode(rn, 1, col, NULL)) ||
MAX(decode(rn, 2, ',' || col, NULL)) ||
MAX(decode(rn, 3, ',' || col, NULL)) str
FROM (SELECT id,
col,
row_number() over(PARTITION BY id ORDER BY col) AS rn
FROM t_row_str) t
GROUP BY id
ORDER BY 1;
5.2
ROW_NUMBER + LEAD
適用范圍:8i,9i,10g及以后版本
SELECT id, str
FROM (SELECT id,
row_number() over(PARTITION BY id ORDER BY col) AS rn,
col || lead(',' || col, 1) over(PARTITION BY id ORDER BY col) ||
lead(',' || col, 2) over(PARTITION BY id ORDER BY col) ||
lead(',' || col, 3) over(PARTITION BY id ORDER BY col) AS str
FROM t_row_str)
WHERE rn = 1
ORDER BY 1;
5.3
MODEL
適用范圍:10g及以后版本
SELECT id, substr(str, 2) str FROM t_row_str
MODEL
RETURN UPDATED ROWS
PARTITION BY(ID)
DIMENSION BY(row_number() over(PARTITION BY ID ORDER BY col) AS rn)
MEASURES (CAST(col AS VARCHAR2(20)) AS str)
RULES UPSERT
ITERATE(3) UNTIL( presentv(str[iteration_number+2],1,0)=0)
(str[0] = str[0] || ',' || str[iteration_number+1])
ORDER BY 1;
5.4
SYS_CONNECT_BY_PATH
適用范圍:8i,9i,10g及以后版本
SELECT t.id id, MAX(substr(sys_connect_by_path(t.col, ','), 2)) str
FROM (SELECT id, col, row_number() over(PARTITION BY id ORDER BY col) rn
FROM t_row_str) t
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1
AND id = PRIOR id
GROUP BY t.id;
適用范圍:10g及以后版本
SELECT t.id id, substr(sys_connect_by_path(t.col, ','), 2) str
FROM (SELECT id, col, row_number() over(PARTITION BY id ORDER BY col) rn
FROM t_row_str) t
WHERE connect_by_isleaf = 1
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1
AND id = PRIOR id;
5.5
WMSYS.WM_CONCAT
適用范圍:10g及以后版本
這個函數(shù)預(yù)定義按','分隔字符串,若要用其他符號分隔可以用,replace將','替換。
SELECT id, REPLACE(wmsys.wm_concat(col), ',', '/') str
FROM t_row_str
GROUP BY id;

------------------取按列排名的指定記錄
select * from (
  select t.*,cume_dist() over(order by t.score) cume_dist
  from testtable t)
where  cume_dist>=0.1 and cume_dist<=0.5 ;

oracle 分析function nb


select * from (
  select t.*,cume_dist() over(order by t.score) cume_dist
  from testtable t)
where  cume_dist>=0.1 and cume_dist<=0.5 ;

論壇徽章:
0
2 [報告]
發(fā)表于 2010-06-21 20:29 |只看該作者
分析函數(shù):

ntile

功能描述:將一個組分為"表達式"的散列表示,例如,如果表達式=4,則給組中的每一行分配一個數(shù)(從1到4),如果組中有20行,則給前5行分配1,給下5行分配2等等。如果組的基數(shù)不能由表達式值平均分開,則對這些行進行分配時,組中就沒有任何percentile的行數(shù)比其它percentile的行數(shù)超過一行,最低的percentile是那些擁有額外行的percentile。例如,若表達式=4,行數(shù)=21,則percentile=1的有6行,percentile=2的有5行等等。



sql@kokooa>select id,value,ntile(4) over (order by value) as

2 quartile from test017;


        ID      VALUE   QUARTILE

---------- ---------- ----------

         1        123          1

         3        345          1

         4        456         2

         5        567          3

         6        567          4


PERCENT_RANK

功能描述:和CUME_DIST(累積分配)函數(shù)類似,對于一個組中給定的行來說,在計算那行的序號時,先減1,然后除以n-1(n為組中所有的行數(shù))。該函數(shù)總是返回0~1(包括1)之間的數(shù)。RANK函數(shù)對于等值的返回序列值是一樣的

sql@kokooa>select id,value,percent_rank()over(order by id) as pr from test017;


        ID      VALUE         PR

---------- ---------- ----------

         1        123          0

         3        345        .25

         4        456         .5

         5        567        .75

         6        567         1

如果有重復(fù)元素呢?

sql@kokooa>select id,value,percent_rank()over(order by id) as pr from test017;


        ID      VALUE         PR

---------- ---------- ----------

         1        123          0

         1        234          0

         3        345         .4

        4        456         .6

         5        567         .8

         6        567          1


其中開頭兩行id重復(fù)。

sql@kokooa>select id,value,percent_rank()over(order by id) as pr from test017;


        ID      VALUE         PR

---------- ---------- ----------

         1        123          0

         2        234         .2

         3        345         .4

         3        456         .4

         5        567         .8

         6        567          1




sql@kokooa>select id,value,percent_rank()over(order by id) as pr from test017;


        ID      VALUE         PR

---------- ---------- ----------

         3        123          0

         3        234          0

         3        345          0

         3        456          0

         3        567          0

         6        567          1



繼續(xù)測:

sql@kokooa>select id,value,percent_rank()over(order by id) as pr from test017;


        ID      VALUE         PR

---------- ---------- ----------

         3        123          0

         3        234          0

         3        345          0

         3        456          0

         5        567         .8

         6        567          1

應(yīng)該是(5-1)/5=0.8 (6-1)/5=1;




Cume_dist

sql@kokooa>select id,value,cume_dist()over(order by id) as pr from test017;


        ID      VALUE         PR

---------- ---------- ----------

         3        123         .5

       3        234         .5

         3        345         .5

         5        456 .833333333

         5        567 .833333333

         6        567          1

應(yīng)該是行數(shù)/總行數(shù)。如果有重復(fù)的,如上:則前3行是3/6 接著2行是5/6。被除數(shù)以重復(fù)行的最后一行的行數(shù)為準。

論壇徽章:
27
處女座
日期:2016-04-18 14:00:4515-16賽季CBA聯(lián)賽之福建
日期:2023-03-31 15:54:2315-16賽季CBA聯(lián)賽之深圳
日期:2020-06-02 10:10:5015-16賽季CBA聯(lián)賽之廣夏
日期:2019-07-23 16:59:452016科比退役紀念章
日期:2019-06-26 16:59:1315-16賽季CBA聯(lián)賽之天津
日期:2019-05-28 14:25:1915-16賽季CBA聯(lián)賽之青島
日期:2019-05-16 10:14:082016科比退役紀念章
日期:2019-01-11 14:44:062016科比退役紀念章
日期:2018-07-18 16:17:4015-16賽季CBA聯(lián)賽之上海
日期:2017-08-22 18:18:5515-16賽季CBA聯(lián)賽之江蘇
日期:2017-08-04 17:00:4715-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 18:21:13
3 [報告]
發(fā)表于 2010-06-22 08:50 |只看該作者
華為上研中心 就搞這個啊 ·

論壇徽章:
0
4 [報告]
發(fā)表于 2010-06-22 12:52 |只看該作者
為啥華為杭州沒搞Oracle的

論壇徽章:
0
5 [報告]
發(fā)表于 2010-06-22 22:07 |只看該作者
select * from
(select t.* ,row_number() over (partition by groupid  order by score) rm  from  testtable t ) a where a.rm=1   這個去重的

論壇徽章:
0
6 [報告]
發(fā)表于 2010-06-25 13:09 |只看該作者
分析函數(shù)非常方便地簡化了做報表的復(fù)雜度,向樓主學(xué)習(xí)

論壇徽章:
0
7 [報告]
發(fā)表于 2010-07-13 00:35 |只看該作者
select regexp_substr('[10000]/[100]*{100}', '[[:digit:]]{3,5}',1,1) from dual;

select regexp_substr('[10000]+[100]', '[[:digit:]]{3,5}',1,2) from dual;

論壇徽章:
0
8 [報告]
發(fā)表于 2010-07-13 00:42 |只看該作者
select regexp_substr('[10000]+[100]', '[[:digit:]]{3,5}',1,1) from dual;

select regexp_substr('[10000]+[100]', '[[:digit:]]{3,5}',1,2) from dual;



select regexp_substr('[10000]+[100]', '[[:digit:]]+',1,1) A from dual;
select regexp_substr('[10000]+[100]', '[[:digit:]]+',1,2) B from dual;

論壇徽章:
0
9 [報告]
發(fā)表于 2010-07-13 13:27 |只看該作者
正則表達式

論壇徽章:
0
10 [報告]
發(fā)表于 2010-07-14 14:04 |只看該作者
總結(jié)的不錯,對弄報表的人很有用
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP