使用postgresql,我必须构建两个名为country和neighbor的表。这是我写的问题。
CREATE TABLE country (
cid INTEGER PRIMARY KEY,
cname VARCHAR(20) NOT NULL,
height INTEGER NOT NULL,
population INTEGER NOT NULL
);
CREATE TABLE neighbour (
country INTEGER REFERENCES country(cid) ON DELETE RESTRICT,
neighbor INTEGER REFERENCES country(cid) ON DELETE RESTRICT,
length INTEGER NOT NULL,
PRIMARY KEY(country, neighbor)
);
现在我想问的问题是,对于每个国家,我必须找到一个海拔最高的邻国。我要报告它的身份和名字
我必须得到国家的身份证和名称和它的邻国的身份证和最高海拔点的名称。
SELECT country.cid,country.cname,foo.cid,foo.cname
from country,(SELECT cid,cname
from country
join neighbour
on country.cid = neighbour.neighbor) as foo
group by country.cid, country.cname, foo.cid, foo.cname;
这就是我所做的,但是我不知道在哪里添加max()子句来找到最高的高程点。
1条答案
按热度按时间gkl3eglg1#
可以对以下对象使用联接和互异:
对于每个国家,查询都通过桥表跟踪关系
neighbour
表和,通过加入恢复所有邻居country
第二次。那么,distinct on
与最伟大的人保持亲密关系height
只是。