SQL中的句点结果百分比

时间:2012-09-26 21:44:08

标签: sql percentage period

我想从每个时期的此数据计算SQL中的结果百分比。

Period  Result
1        Green
1        Blue
1        Blue
1        Red
1        Blue
1        Blue
1        Blue
2        Green 
2        Green 
2        Green
2        Blue
2        Red
2        Red

预期结果..

Period  Result  Percentage
1        Blue     72%
1        Green    9%
1        Red      9%
2        Blue     17%
2        Green    50%
2        Red      33%

2 个答案:

答案 0 :(得分:2)

COUNT首先Period,再次将结果与原始表一起加入,按PeriodResult分组,然后进行除法以获得百分比:

SELECT t.Period, t.Result, ((COUNT(t.Result) / Cnt) * 100) Percentage
FROM table t 
     INNER JOIN (SELECT Period, COUNT(*) Cnt
                 FROM table
                 GROUP BY Period) period_cnt 
     ON t.Period = period_cnt.Period
GROUP BY t.Period, t.Result

您可能需要调整舍入,并使用CONCAT将字符%添加到输出中,但这应该相当容易。

此外,第一个时段的平均值是错误的,它应该加起来为100。绿色和红色应具有值14

<强> DEMO

答案 1 :(得分:1)

像这样(ANSI SQL):

select period,
       result,
       (count(result) / total_period) * 100 as result_percent
from (
  select period, 
         result,
         count(*) over (partition by period) as total_period
  from periods  
) as t
group by period, total_period, result
order by period, result;

根据您的DBMS,您可能需要将整数值转换为小数,以便查看小数值。

演示:http://sqlfiddle.com/#!1/2ec4f/1