我正在学习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。
我希望我对此解释得足够好。如果有人对我在做什么错有任何见解,非常感谢您的投入!谢谢!
答案 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;