mysql - MySQL子查询,别名,从表连接查询计算
问题描述
来这里很新MySQL
。我有以下查询不是我想要的方式:**SELECT round(sum(temp_pop.pop_total * demographics.coefficient)) as demand, pop_proj.pop_total from pop_proj, d.age, d.coefficient, d.educationalattainment from demographics d JOIN (SELECT year,sum(pop_total), age FROM pop_proj GROUP BY year, age) AS temp_pop WHERE d.age = CASE WHEN temp_pop.age < 18 then '00 to 17' WHEN temp_pop.age > 64 then '65 to 80+' ELSE '18 to 64' end;**
来源是subquery
上面显示的语法,我正在尝试join
使用一个名为“ demographics
”的表,其中只有三列显示education level (educational attainment)
,一个年龄范围(年龄) - 显示在案例语句中,以及一个系数,用于计算查询的开头。pop_proj 表提供了年份、年龄和人口总数(pop_total 列)。我正在尝试使用 temp_pop 作为子查询的别名。我很确定这个案子写得正确。但是,当我运行查询时,它告诉我:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'mysql> SELECT round(sum(temp_pop.pop_total * population.coefficient)) as deman' 附近使用正确的语法
我还想按年份和教育水平对结果进行分组,我只是还没有在其中添加。
以前我写的只是略有不同,它告诉我它不能识别列名pop_total,但还没有得到没有错误的结果。我可能完全不知道如何编写这个查询,但希望我能接近。我会很感激一些帮助!提前致谢!
解决方案
很难理解你真正追求的是什么,但这可能会让你更进一步。
下面假设您仅与demographics
CASEpop_total
中人为的年龄范围字符串相关,这是可疑的并且可能无效。
这不会尝试对结果进行分组,但是一旦您可以看到满足您需求的工作详细输出,这应该很简单。
SELECT d.age, d.coefficient, d.educationalattainment, temp_pop.pop_total
FROM demographics d JOIN (
SELECT `year`, age, sum(pop_total) as pop_total
FROM pop_proj
GROUP BY `year`, age
) temp_pop ON d.age =
CASE WHEN temp_pop.age < 18 THEN '00 to 17'
WHEN temp_pop.age > 64 THEN '65 to 80+'
ELSE '18 to 64' END
;
推荐阅读
- python - 快速 API - MySQL - SQLAlchemy:在 Pydantic 模型中获取 ValidationError 'Invalid type'
- flutter - 如何添加线性百分比指标
- javascript - google-maps-react 默认缩放不适用于 bounds 道具
- c - 如何在 C 中将 size_t 转换为 int?
- flutter - 我正在尝试从网站获取订单详细信息并收到错误“必须向文本小部件提供非空字符串”
- prometheus - Prometheus Alert 不适用于基于事件的指标
- image - 使用 Imagemagick 查找黑色边框尺寸
- c# - 如何以与即时窗口相同的方式将集合输出到控制台
- r - R问题 - 为数据框中的变量生成数字序列
- python - 使用python删除文本文件中不需要的部分