Fans By AgeGroup in Percentage SQLITE

46 Views Asked by At

Hey guys I need some help, I can't get the execution right...

I have two queries that get me the results I need to get the right percentage.

1st query:

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

Results:

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

2nd query:

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

Results:

971011

I need to divide the NumberOfFans results in query 1, by the result from query two

And the end results should display AgeGroup and PercentageOfFans grouped by AgeGroup...

Any thoughts?

I tried simple things like:

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

But that's not the right percentage when the calculations are done manually.

The answer for age group 13-17 should be 0.020939

1

There are 1 best solutions below

0
RF1991 On

use Cross Join and Subquery to get your desired result


select AgeGroup,CAST(SUMNumberOfFans1 AS FLOAT)/SUMNumberOfFans2 
from 
(Select Date, 
AgeGroup,
SUM(NumberOfFans) SUMNumberOfFans1
From FansPerGenderAge 
WHERE date = (SELECT max(date) from FansPerGenderAge) 
GROUP BY AgeGroup) a
CROSS JOIN (
Select 
SUM(NumberOfFans) SUMNumberOfFans2
From FansPerGenderAge 
WHERE date = (SELECT max(date) from FansPerGenderAge)) b