我有一张表,列出了测试的分数列表,例如可以说分数为30。按组百分比增加的SQL组
我想通过计算得分在一定百分比范围内的人数来呈现数据。
例如:
Total % Bracket
-----------------
5 95-100%
15 90-94%
20 85-89%
17 80-84%
15 75-79%
etc
我想到了第一次计算每个百分比支架所需的分数,然后做一个SUM(CASE ....
莫名其妙,但我似乎迷路了。
我有一张表,列出了测试的分数列表,例如可以说分数为30。按组百分比增加的SQL组
我想通过计算得分在一定百分比范围内的人数来呈现数据。
例如:
Total % Bracket
-----------------
5 95-100%
15 90-94%
20 85-89%
17 80-84%
15 75-79%
etc
我想到了第一次计算每个百分比支架所需的分数,然后做一个SUM(CASE ....
莫名其妙,但我似乎迷路了。
没有时间来测试这一点,但东西长的线..
select t.pcbracket as [% Bracket], count(*) as [NumWithMark]
from (
select case
when mark between 0 and 9 then ' 0- 9'
when mark between 10 and 19 then '10-19'
when mark between 20 and 29 then '20-29'
when mark between 30 and 39 then '30-39'
else '40-100' end as pcbracket
from testresults) t
group by t.pcbracket
谢谢,这让我走上正轨,只需将分数转换成一个百分比,然后使用你的方法。 –
我会用嵌套查询来解决这个问题。 内部查询我会使用简单的百分比组,然后在它上面我会使用大小写来指定百分比范围并获得输出。
可以应用情况,但在这种情况下,你会错过的间隔记录0计数。所以,你可以做到这一点通过以下方式:
select t2.start,t2.finish, count(t.score) from t
RIGHT JOIN
(
select 0 as start, 4 as finish
union all
select 5 as start, 9 as finish
union all
select 10 as start, 14 as finish
union all
.......
union all
select 95 as start, 99 as finish
) as t2 on t.score between t2.start and t2.finish
group by t2.start,t2.finish
order by t2.start
你能分享预期的结果的例子吗? – Kuzgun
@Kuzgun我有它的问题。我想要统计一定百分比范围内的总人数 –
您正在使用哪个数据库? – Kuzgun