gpt4 book ai didi

MySQL 子查询、别名、表连接查询的计算

转载 作者:行者123 更新时间:2023-11-29 17:16:21 29 4
gpt4 key购买 nike

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) 、年龄范围 (age) - 在 case 语句中显示,以及在查询开始时用于计算的系数。 pop_proj 表提供年份、年龄和人口总数(pop_total 列)。我正在尝试使用 temp_pop 作为子查询的别名。我相当确定这个案例写得正确。但是,当我运行查询时,它告诉我:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的 'mysql> SELECT round(sum(temp_pop.pop_total *demistics.coefficient)) as deman' 附近使用的正确语法

我还想按年份和教育水平对结果进行分组,只是我还没有将其添加到其中。

之前我的写法只是略有不同,它告诉我它无法识别列名 pop_total,但还没有得到没有错误的结果。我可能完全不知道如何编写这个查询,但希望我已经接近了。我将不胜感激一些帮助!提前致谢!

最佳答案

很难理解您真正追求的是什么,但这可能会让您更近一步。

下面的内容假设您仅在 CASE 中的人为年龄范围字符串上将人口统计pop_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
;

关于MySQL 子查询、别名、表连接查询的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51575005/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com