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
假设我有三个 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