有一個資料表,內有四筆資料,數量分別是2, 3, 5, 10,我希望用SQL查出如下包含百分比10%,15%, 25%, 50%的結果:

ID     AMT     PERC   
-----  ------  -------
1      2       10%    
2      3       15%    
3      5       25%    
4      10      50%
   

同事出了這個考題給我,算是讓我學會SUM() OVER (PARTITION BY ...)的用法。以上問題的解法如下:

--FOR ORACLE
SELECT ID, AMT, 
AMT * 100 / SUM(AMT) OVER (PARTITION BY NULL) || '%' 
AS PERC
FROM JEFF
 
--FOR SQL Server
SELECT ID, AMT, 
CONVERT(VARCHAR(3), 
            AMT * 100 / SUM(AMT) OVER (PARTITION BY NULL)
        ) + '%'
AS PERC
FROM JEFF

UPDATE @ 2007-10-27
SUM(AMT) OVER (PARTITION BY NULL) 寫成 SUM(AMT) OVER () 即可算全部的總和


Comments

# by 金旺

好像沒有什麼難得倒你的啊...

Post a comment


46 - 30 =