我有一个表 [world] 有字段(名称、人口、GDP、面积等)。我能拿到这样的桌子,这很好
World
name Total Populat.. Pop Density/KM
China 19.18 142.3
India 17.51 393.6
USA 4.47 32.4
Indonesia 3.54 132.4
Brazil 2.85 23.8
Pakistan 2.64 213.2
Nigeria 2.51 193.2
Bangladesh 2.20 1060.9
Russia 2.05 8.5
Japan 1.79 336.3
使用代码。
SELECT name,
ROUND (population/(SELECT sum(population) FROM world )* 100,2 ) as 'Total Population',
ROUND (population/area ,1) as 'Pop Density/KM'
FROM world
ORDER BY 2 Desc LIMIT 10
我正在尝试使用此代码
SELECT name,
ROUND (population/(SELECT sum(population) FROM world )* 100,2 ) as 'Total Population',
ROUND (population/area ,1) as 'Pop Density/KM'
FROM world
ORDER BY 2 DESC LIMIT 10, 3
这样我就可以有一个表格,显示按人口排列的前 10 行,但按第 3 列对它们进行排序。简而言之,我希望能够只拥有这些记录(如上表所示),但根据流行密度/KM 降序进行排序。我没有得到想要的结果
您需要使用子查询。但是不要对列别名使用单引号!仅对字符串和日期常量使用单引号。
所以:
SELECT *
FROM (SELECT name,
ROUND(population/(SELECT sum(population) FROM world) * 100, 2) as "Total Population",
ROUND(population/area, 1) as "Pop Density/KM"
FROM world
ORDER BY "Total Population" DESC
LIMIT 10
) w
ORDER BY "Pop Density/KM";
在 MariaDB 中,您还可以使用反引号作为转义字符。实际上,我建议重命名列,这样它们根本不需要转义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句