按组占总数的百分比

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

【讨论】:

以上是关于按组占总数的百分比的主要内容,如果未能解决你的问题,请参考以下文章

Mysql按组划分的百分比[关闭]

Groupby 对象的百分比变化(按组)

ggplot barplot 按组给出百分比

使用 mutate_ 进行标准评估以按组计算百分比

Pig - 计算字段的总数百分比

有没有办法使用聚合命令按组计算不对称平均值(例如从百分位数 0.05 到 0.5)? R-工作室