Mysql 从两个表合计SQL计算速率
我是从两个不同的表格中计算出的总数,这两个表格都与试图找出犯罪率对人口的影响有关 这是我的代码:Mysql 从两个表合计SQL计算速率,mysql,sql,join,Mysql,Sql,Join,我是从两个不同的表格中计算出的总数,这两个表格都与试图找出犯罪率对人口的影响有关 这是我的代码: SELECT SUM(INCIDENT_BY_REGION.Total) AS TotalCrime, SUM(REGION.Population) AS TotalPopulation, (TotalCrime/TotalPopulation) AS Rate FROM INCIDENT_BY_REGION JOIN REGION ON INCIDENT_BY_REGION.RegionID =
SELECT SUM(INCIDENT_BY_REGION.Total) AS TotalCrime,
SUM(REGION.Population) AS TotalPopulation,
(TotalCrime/TotalPopulation) AS Rate
FROM INCIDENT_BY_REGION JOIN REGION
ON INCIDENT_BY_REGION.RegionID = REGION.RegionID;
但我有个错误
错误代码1054:“字段列表”中的未知列“TotalCrime”
我想知道的是人口犯罪率。
有什么建议吗 请尝试下面的内容,在计算速率时不应使用别名。此外,当表达式
和(region.population)=0时使用case更安全,以避免被零除的错误:
SELECT SUM(INCIDENT_BY_REGION.Total) AS TotalCrime,
SUM(REGION.Population) AS TotalPopulation,
case when SUM(REGION.Population) > 0 then
SUM(INCIDENT_BY_REGION.Total)/SUM(REGION.Population)
else 0 end AS Rate
FROM INCIDENT_BY_REGION JOIN REGION
ON INCIDENT_BY_REGION.RegionID = REGION.RegionID;
可能的重复不是重复。重复使用别名答案是行不通的。你能解释一下,在另一个问题中,给定的解决方案到底有什么不起作用吗?为什么要重新计算SUM()
调用?考虑MySQL 8。+ +将很快支持的派生表或CTE。您是正确的,最好创建一个临时表,将计算的数据保存在那里并在需要计算速率时使用该表,但是对于这个例子,我不认为它会创建一个重要的性能问题,所以OP将被发现他正在寻找的东西。mysql中的CTE将非常棒@Parfait@ErayBalkanli . . . 不,冻糕是不对的。也许MySQL 8.0中的CTE会有所帮助,但实现中间结果的开销可能远比只进行求和要昂贵得多。