我正在学习MySQL,我想让两个查询除以每个查询中的和(Populationcount)值,得出单独列中列出的百分比(作为十进制值)。目标是使用我将在下面列出的第一个查询作为子查询,以显示每个年龄组所获得的每种类型教育的百分比。
作为子查询,我需要使用的查询是:按年龄从educational_attainment组选择age、SUM(populationcount);人口计数只生成三个不同的值,这些值将是新查询中的除数值。
我需要使用值的另一个查询是:选择和(人口计数)、年龄、educational_attainment组的教育程度(按年龄)、教育程度()这里的结果显示了12个不同的人口计数值,每个年龄组内的每个教育级别都有一个。
我的查询有点接近于这样:SELECT A.EducationalAttainment,A.age,A educational_attainment A JOIN (按年龄选择age,sum(populationcount) age_populationcount从educational_attainment组按年龄计算)B ON A.age=B.age;不幸的是,它为每个年龄组提供了太多的结果,计算值大于0,而不是小于0的十进制值。
我希望我解释得够清楚。如果有人对我做错了什么有洞察力,我会非常感谢你的意见!谢谢!
发布于 2018-07-26 03:44:37
您应该使用左联接,如下所示:
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;https://stackoverflow.com/questions/51530432
复制相似问题