我的架构中有两个表 - 房屋和城市。如何使用COUNT和GROUP BY确定每个城市的房屋数量?
Houses:
CityID
HouseNumber
StreetName
Cities:
CityID
CityName
Population
请注意:Houses.CityID是Cities.CityID的外键。感谢
预期产出:
City Number of houses
London 50000000
NYC 30000000
Tokyo 40000000
SELECT CityName, count(*) as City
FROM Cities
GROUP BY CityName
答案 0 :(得分:0)
使用JOIN
通过City / CityName合并两个表。您还需要GROUP BY
此列。
SELECT t2.CityName, count(t1.*)
FROM Houses t1
JOIN Cities t2
ON t1.CityID = t2.CityID
GROUP BY t1.City
我使用了表名别名t1
和t2
来使示例显而易见。
答案 1 :(得分:0)
PK&外键我们知道,在城市中,CityID必须是唯一的 我们在房屋中知道CityID是城市的1-M。并且城市中的任何CityID必须存在于城市中。因此,我们不必担心拼写错误,不同的外壳等。
因此,我们选择名称并通过联接计算房屋数量。我们将C.CityID添加到组中,因为cityName可能不是唯一的,我们不希望合并两个Springfield。因此我们需要按CityID分组。
SELECT c.CityName, count(H.*) as Number_of_Houses
FROM Cities C
INNER JOIN Houses H
on C.CityID = H.CityID
GROUP BY C.CityID, C.CityName
答案 2 :(得分:0)
试试这个
Select Cities.CityName, count(Houses.*)
From Houses inner join Cities on Cities.CityName=Houses.City
group by Houses.City
答案 3 :(得分:0)
select cities.cityName, count(houseNumber) as NumberofHouses
from Houses inner join cities on (houses.city = cities.cityName)
group by cityname;