按组占总数的百分比
Posted
技术标签:
【中文标题】按组占总数的百分比【英文标题】:% of Total by group 【发布时间】:2017-11-30 20:32:24 【问题描述】:我在 MyTable 中有三列,我需要计算每组占总数的百分比。
代码:
SELECT AppVintage, Strategy, Apps
FROM mytable
GROUP BY AppVintage,Strategy,Apps
每个日期出现 4 次,每行有不同的类别,然后每行总共有申请。
表格看起来像这样:
示例数据集的代码:
CREATE TABLE mytable(
AppVintage VARCHAR(6) NOT NULL PRIMARY KEY
,Strategy VARCHAR(28) NOT NULL
,Apps INTEGER NOT NULL
);
INSERT INTO mytable(AppVintage,Strategy,Apps) VALUES ('Nov16','300',10197);
INSERT INTO mytable(AppVintage,Strategy,Apps) VALUES ('Nov-16','ORIG',29023);
INSERT INTO mytable(AppVintage,Strategy,Apps) VALUES ('Nov-16','400',7219);
INSERT INTO mytable(AppVintage,Strategy,Apps) VALUES ('Nov-16','500',9452);
INSERT INTO mytable(AppVintage,Strategy,Apps) VALUES ('Dec-16','300',12517);
INSERT INTO mytable(AppVintage,Strategy,Apps) VALUES ('Dec-16','ORIG',37762);
INSERT INTO mytable(AppVintage,Strategy,Apps) VALUES ('Dec-16','400',8992);
INSERT INTO mytable(AppVintage,Strategy,Apps) VALUES ('Dec-16','500',11229);'
我需要添加一个列来计算每个应用程序的每个策略的应用程序百分比。
有没有办法做到这一点?提前致谢!
【问题讨论】:
【参考方案1】:您可以使用窗口函数来执行此操作(假设 SQL Server 2008+)
SELECT
AppVintage,
Strategy,
Apps,
Apps/SUM(Apps) OVER (PARTITION BY AppVintage) as Percent_Apps
FROM myTable
【讨论】:
以上是关于按组占总数的百分比的主要内容,如果未能解决你的问题,请参考以下文章