特定状态类型的百分比

时间:2015-02-02 14:19:12

标签: sql sql-server tsql

我正在尝试将一些jQuery图表放在一起,以表示系统中给定消息状态的百分比数字。因为,有10%的消息尚未被读取等。

我可以使用它来获取每种类型的所有消息的数据集:

SELECT MessageStatus, count(*) * 100.0 / sum(count(*)) over() As Percentage
FROM TableA
group by MessageStatus

产生:

   2 7
   3 84
   5 7

因此,7%的消息都是消息类型2等等。

现在,只要我输入where子句,无论是特定的messageStatus还是日期范围,它总是以100%返回messageStatus。例如

SELECT MessageStatus, count(*) * 100.0 / sum(count(*)) over() As Percentage
FROM TableA
WHERE MessageStatus = '3'
group by MessageStatus

是否可以获取特定消息类型的所有消息的百分比?使用消息类型,是1-10的int。

2 个答案:

答案 0 :(得分:2)

一种选择是使用子查询:

select * 
from (
  select MessageStatus, count(*) * 100.0 / sum(count(*)) over() As Percentage
  from TableA
  group by MessageStatus
) t
where messagestatus = '3'

答案 1 :(得分:1)

另一种方法是使用子查询:

SELECT MessageStatus,
       count(*) * 100.0 / (select count(*) from TableA)
FROM TableA
WHERE MessageStatus = '3'
GROUP BY MessageStatus;