SQL(计数(*)/locations.area)
我们在学校学习SQL,我的教授在他的文档中有这个SQL代码SQL(计数(*)/locations.area),sql,Sql,我们在学校学习SQL,我的教授在他的文档中有这个SQL代码 SELECT wp.city, (COUNT(*) / locations.area) AS population_density FROM world_poulation AS wp INNER JOIN location ON wp.city = locations.city WHERE locations.state = “Hessen” GROUP BY wp.city, locations.area 对我来说一切都很清楚,
SELECT wp.city, (COUNT(*) / locations.area) AS population_density
FROM world_poulation AS wp
INNER JOIN location
ON wp.city = locations.city
WHERE locations.state = “Hessen”
GROUP BY wp.city, locations.area
对我来说一切都很清楚,只是带有/locations.area的聚合函数对我来说没有任何意义。有人能帮忙吗
提前谢谢你 查看查询分组的内容,这会告诉您每个组由什么组成。在这种情况下,每个组都是一个城市,并且包含具有相同值的所有行(由于
location
表也与该值相连,locations.area
仅包含在分组中,以便在结果中使用)
因此,每个组都有若干行,COUNT(*)
聚合将包含每个组的行数。(COUNT(*)/locations.area)
的值将是组中的行数除以该组的locations.area的值
如果您有这样的数据:
world_population
name city
--------- ---------
John London
Peter London
Sarah London
Malcolm London
Ian Cardiff
Johanna Stockholm
Sven Stockholm
Egil Stockholm
locations
city state area
----------- -------------- ---------
London Hessen 2
Cardiff Somehere else 14
Stockholm Hessen 1
然后你会得到两组的结果(因为加的夫不在黑森州)。一组有四个人来自伦敦,那里有2区,所以人口密度是2。另一组有三个人来自斯德哥尔摩,那里有1区,所以人口密度是3
旁注:查询中有一个输入错误,因为它在表location
中联接,但在其他任何地方都将其称为locations
。尝试这样编写:
SELECT wp.city,
locations.area,
COUNT(*) AS population,
(COUNT(*) / locations.area) AS population_density
FROM world_poulation AS wp
INNER JOIN location
ON wp.city = locations.city
WHERE locations.state = “Hessen”
GROUP BY wp.city, locations.area
关键是GROUPBY语句。您正在展示成对的城市和地区。COUNT(*)是通过加入世界人口和位置创建的表中显示给定对的次数。面积只是一个数字,所以你可以将面积除以计数。什么不合理?两个数字被彼此除?