按年龄组划分的粉丝百分比 SQLITE

问题描述 投票:0回答:1

嘿伙计们,我需要一些帮助,我无法正确执行......

我有两个查询可以让我获得获得正确百分比所需的结果。

第一个查询:

Select Date, AgeGroup,SUM(NumberOfFans) From FansPerGenderAge WHERE date = (SELECT max(date) from FansPerGenderAge) GROUP BY AgeGroup;

结果:

2018-10-16|13-17|20332
2018-10-16|18-24|206787
2018-10-16|25-34|347581
2018-10-16|35-44|188335
2018-10-16|45-54|91804
2018-10-16|55-64|48793
2018-10-16|65+|67379

第二个查询:

Select SUM(NumberOfFans) From FansPerGenderAge WHERE date = (SELECT max(date) from FansPerGenderAge);

结果:

971011

我需要将查询 1 中的 NumberOfFans 结果除以查询二的结果

最终结果应该显示 AgeGroup 和按 AgeGroup 分组的 PercentageOfFans...

有什么想法吗?

我尝试了简单的事情,例如:

SELECT AgeGroup, Round(AgeGroup * 100.0 / SUM(NumberOfFans), 4) FROM FansPerGenderAge WHERE date = (SELECT max(date) from FansPerGenderAge) GROUP BY AgeGroup;

13-17|0.0639
18-24|0.0087
25-34|0.0072
35-44|0.0186
45-54|0.049
55-64|0.1127
65+|0.0965

但是,当手动完成计算时,这不是正确的百分比。

13-17岁年龄段的答案应该是0.020939

sql sqlite group-by percentage
1个回答
0
投票

使用交叉连接和子查询来获得你想要的结果


select AgeGroup,NumberOfFans/NumberOfFans2
(Select Date, 
AgeGroup,
SUM(NumberOfFans) 
From FansPerGenderAge 
WHERE date = (SELECT max(date) from FansPerGenderAge) 
GROUP BY AgeGroup) a
join (
Select 
SUM(NumberOfFans) NumberOfFans2
From FansPerGenderAge 
WHERE date = (SELECT max(date) from FansPerGenderAge)) b
on 1=1

© www.soinside.com 2019 - 2024. All rights reserved.