SQL:使用百分比的表的每月细分

时间:2018-06-08 22:34:01

标签: sql sql-server

问题

Date          OS        TABLE: OSusage
2018-01-01    MacOS
2018-01-03    MacOS
2018-01-11    MacOS
2018-01-20    Windows
2018-01-21    Linux
2018-03-01    MacOS
2018-03-14    MacOS
2018-03-20    MacOS
2018-03-29    Windows
2018-05-10    MacOS
2017-10-10    MacOS

我想将上述数据总结为过去6个月的细分:

Month      & of MacOS
May        100%     
March      75%           (3/4*100)
January    60%           (3/5*100)

这是我的问题的简化版本,这就是我来的。

我做了多少尝试。

DATENAME是我如何设法获得几个月的细分,但即使尝试在子查询中再次使用它,我也在努力寻找一种计算MacOS数量的方法。

SELECT DATENAME(Month,OSusage.date)AS Months, OS
FROM OSusage
WHERE OSusage.Date >= DATEADD(MONTH, -6, GETDATE())
GROUP BY DATENAME(Month,OSusage.date)

着迷于解决方案&非常感谢任何帮助。 干杯

2 个答案:

答案 0 :(得分:1)

我会用比例来做到这一点:

select year(o.date), datename(month, o.date),
       avg(case when os = 'MacOS' then 100.0 else 0 end) as macos_ratio
from osuage o
group by year(o.date), datename(month, o.date)
order by min(o.date);

请注意,我包括了这一年。也许你不希望这一年爆发,但这在几个月的工作中是典型的。

答案 1 :(得分:1)

这应该有效

HttpResponseMessage