Sql 创建从多个表获取数据的查询
我试图为我的课堂作业编写查询,但有一个查询特别困难。我遇到问题的查询统计每个国家的所有城市,并显示从最大城市数到最小城市数的城市数。我试图编写的查询的确切定义是 按降序列出国家/地区,从 数据库中城市数量最多,以 数据库中城市数量最少的国家。城市 城市数量相同的城市应按字母顺序排序 从A到Z 现在我将发布我为这个查询尝试过的代码,以及我用来完成它的表Sql 创建从多个表获取数据的查询,sql,postgresql,Sql,Postgresql,我试图为我的课堂作业编写查询,但有一个查询特别困难。我遇到问题的查询统计每个国家的所有城市,并显示从最大城市数到最小城市数的城市数。我试图编写的查询的确切定义是 按降序列出国家/地区,从 数据库中城市数量最多,以 数据库中城市数量最少的国家。城市 城市数量相同的城市应按字母顺序排序 从A到Z 现在我将发布我为这个查询尝试过的代码,以及我用来完成它的表 SELECT country.name FROM what.country as name INNER JOIN what.city as c
SELECT country.name
FROM what.country as name
INNER JOIN what.city as city ON name.country_code = city.country_code
SORT BY name DESC
这是我正在使用的两张桌子
Table "what.country"
Column | Type | Modifiers
-----------------+-----------------------+--------------------------------------
country_code | character(3) | not null default ''::bpchar
name | character varying(52) | not null default ''::character varying
continent | continent | not null
region | character varying(26) | not null default ''::character varying
surface_area | real | not null default 0::real
indep_year | smallint |
population | integer | not null default 0
life_expectancy | real |
gnp | real |
Table "what.city"
Column | Type | Modifiers
--------------+-----------------------+-----------------------------------------
id | integer | not null default nextval('city_id_seq'::regclass)
name | character varying(35) | not null default ''::character varying
country_code | character(3) | not null default ''::bpchar
district | character varying(20) | not null default ''::character varying
population | integer | not null default 0
您可以尝试执行以下查询:
SELECT A.name AS name, IFNULL(B.cities, 0) AS cities
FROM what.country AS A
LEFT JOIN (SELECT country_code, count(id) AS cities FROM what.city GROUP BY country_code) AS B
ON A.country_code = B.country_code
ORDER BY cities DESC, name ASC
按降序列出国家/地区,从
数据库中城市数量最多,以
数据库中城市数量最少的国家。城市
城市数量相同的城市应按字母顺序排序
从A到Z
- 要查找城市数量最多的
或国家
,我们需要使用城市数量最少的国家
和分组依据
,其中分组依据国家和计数城市计数
- 对于
使用降序
,对于城市计数描述
使用相同数量的城市应按字母顺序排序
国家名称
我很感激你的解释,它真的帮助了我!提供的查询在PostgreSQL中不起作用,因为没有
排序依据
子句。
SELECT country.name AS country_name, COUNT(city.id) AS city_count
FROM what.country as name
INNER JOIN what.city as city ON name.country_code = city.country_code
GROUP BY country.name
ORDER BY city_count DESC, country_name