【发布时间】:2021-02-26 21:36:27
【问题描述】:
我有一个特殊的查询要运行。我需要将每个地区下不同地级市的人口值求和为一列,并将其返回给主查询。例如这个查询:
SELECT region_en
, population AS temppop
FROM prefectures
WHERE region_id = 12
GROUP
BY region_en
返回此表:
Karditsa 129541
Larissa 279305
Magnesia 206995
Sporades 13798
Trikala 138047
以上所有都属于同一个区域 id (12),我需要在同一个查询下获得所有这些人口的总和。我尝试应用上述方法,但它不起作用。我没有得到 767686 而是 95960750 的总和:
SELECT SUM(b.cases) as cases
, COALESCE(SUM(o.poptemp), 0) as pop
FROM prefectures AS b
LEFT
JOIN
( SELECT region_en
, population AS poptemp
FROM prefectures
WHERE region_id = 12
GROUP
BY region_en
) AS o
ON o.region_en = b.region_en
WHERE b.region_id = '12'
基本上我需要每个地区的病例总数,以及居住在该地区的所有人的总和。
【问题讨论】:
-
第一个查询中的 group by 没有任何作用,因为没有发生聚合 - 它可能会产生不正确的结果..
-
这是必需的,因为对于包含每日病例的每一行来说,人口是一个固定值。没有它,我不会得到所有的个别县和他们的人口,而是一条或一条溪流……看看这个:prntscr.com/vjhzas
-
你不应该在县的每一行中存储人口。
-
它也可以是一个 Total_Cases 或 Total_Incubated 数字,这将是每个县的总数,每天都在增加......这是同一回事。
标签: mysql sql group-by sum subquery