从两个表总计中计算速率SQL

时间:2018-11-14 15:59:48

标签: 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 = REGION.RegionID;

但是我得到一个错误,

  

错误代码1054:“字段列表”中的未知列“ TotalCrime”

我要寻找的是人口犯罪率。 有什么建议么?

1 个答案:

答案 0 :(得分:0)

请尝试以下操作,在计算“费率”时不应使用别名。另外,使用case-when表达式更安全,而使用sum(region.population) = 0来避免divide by zero错误。

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;