2012-03-05 104 views
1

状态的号码,我有一些记录与状态表SR(更多然后5个记录这只是例子):SQL查询 - 在百分比

ID STATUS 
1 NEW 
2 OPEN 
3 OPEN 
4 PENDING 
5 PENDING 

我想表的格式如下:

STATUS PERCENTAGE 

NEW  20 
OPEN  40 
PENDING 40 

我写的SQL查询,但我不能让它工作:

with HELPTABLE as 
(select count(*) as NUMBER 
from SR 
) 
select 
    SR.STATUS, 
    (count (*))/(HELPTABLE.NUMBER) * 100 
from 
    SR, HELPTABLE 
group by 
    SR.status 

使用HELPTABLE我得到的结果是5

如果我不把HELPTABLE.NUMBER我得到一些结果。

如果我把(count (*))与我们说2我得到的结果,但如果我把HELPTABLE.NUMBER这是5我得到一个错误。

感谢您的帮助。

+0

你什么错误? – 2012-03-05 16:10:41

回答

5

我猜SQL Server 2005或更高

select 
    T.STATUS, 100.0 * COUNT(*)/Total 
from 
    (
    SELECT 
     ID, STATUS, COUNT(*) OVER() AS Total 
    FROM 
     SR 
    ) T 
group by 
    T.status, T.Total 
+0

我正在使用DB2。我有一些奇怪的结果。我必须在查询上方保留我的WITH语句? – Dejan 2012-03-05 15:54:38

+0

@ user1191860:纠正抱歉。希望这适用于DB2 – gbn 2012-03-05 15:59:19

+0

感谢您的帮助,它可以工作。我只是想知道为什么我不能用WITH语句来做到这一点?这对我来说似乎是正确的?对不起,如果你知道答案(正确的查询与WITH),如果不是不知道 – Dejan 2012-03-05 16:08:34