使用子查询和可能的联接来获取人口百分比

时间:2018-07-26 03:09:38

标签: mysql join subquery division coefficients

我正在学习MySQL,我想通过两个查询将每个查询中的sum(populationcount)值相除,以得出在单独的列中列出的百分比(作为十进制值)。目标是使用我将在下面列出的第一个查询作为子查询,以显示每个年龄段所接受的每种教育的百分比。

我需要用作子查询的查询是这样的: 选择年龄,来自教育程度GROUP BY的年龄(总数); 人口计数只会产生三个不同的值,它们将成为新查询中的除数。

我需要使用值的另一个查询是: 从年龄,教育程度中按学历分组选择总和(人口数),年龄,教育程度 此处的结果显示了12种不同的人口数量值,每个年龄组所达到的每个受教育程度的值。

我要接近的查询看起来像这样: SELECT A.EducationalAttainment,A.age,A.populationcount / B.age fromeducation_attainment A JOIN(SELECT年龄,sum(populationcount)age_populationcount从FROM的教育程度GROUP BY年龄)B ON.age = B.age; 不幸的是,它给我每个年龄段的结果太多了,计算值大于0而不是十进制值小于0。

我希望我对此解释得足够好。如果有人对我在做什么错有任何见解,非常感谢您的投入!谢谢!

1 个答案:

答案 0 :(得分:0)

您应使用LEFT JOIN,如下所示:

SELECT 
    A.age, B.educationalattainment, 
    (IFNULL(B.pop_count, 0)/A.pop_count)*100 percentage_pop
FROM
(SELECT 
    age, SUM(populationcount) pop_count 
 FROM educational_attainment 
 GROUP BY age) A
LEFT JOIN 
(SELECT 
    sum(populationcount) pop_count, age, educationalattainment 
 FROM educational_attainment 
 GROUP BY age, educationalattainment) B
ON A.age=B.age;