SQL: Select 同一条路上所有城镇的人口总和

SQL: Select SUM of population of all towns on the same road

假设我有三个 tables:

Towns
| town_name | population |

Roads
| road_name |

TownsOnRoads
| town_name | road_name |

城镇和道路之间存在 m 对 n 的关系 - 城镇可以位于任意数量的道路上,而道路可以穿过任意数量的城镇。

我想要得到的是一个像这样的table:

RoadPopulations
| road_name | population |

其中人口是该道路上每个城镇所有人口的总和。我是 SQL 的新手,所以我无法弄清楚如何准确地构建 select 查询。我已经达到:

SELECT DISTINCT SUM(population) as popn
FROM Towns t JOIN TownsOnRoads tor
ON t.town_name = tor.road_name;

但显然这只给了我一个 1 列 table 和 1 个元组 - 带有一个没有任何意义的 popn 值......有什么想法吗?

编辑:顺便说一句,这里有一个针对特定道路的有效查询。

哦,如果它有帮助,这里是工作查询,只是为了获得一条特定道路的答案:

SELECT DISTINCT SUM(population) as popn
FROM Towns t JOIN TownsOnRoads tor
ON t.town_name = tor.road_name
WHERE tor.road_name="route 66";

您必须 join 表格中的 town_name 列。也使用 group by 这样你就可以得到每个 road_name.

的总人口数
SELECT tor.road_name, SUM(population) as popn
FROM Towns t 
JOIN TownsOnRoads tor ON t.town_name = tor.town_name
group by tor.road_name