2012-12-07 44 views
0

对于一个项目,我必须编写两个表并对它们进行查询。我写了这些表格,但需要查询部分的一些指导。SQL - 两个表的查询

这是第一张桌子。

CREATE TABLE Country 
(Name VARCHAR(35) NOT NULL UNIQUE, 
Code VARCHAR(4) CONSTRAINT CountryKey PRIMARY KEY, 
Capital VARCHAR(35), 
Province VARCHAR(35), 
Area NUMERIC CONSTRAINT CountryArea 
    CHECK (Area >= 0), 
Population NUMERIC CONSTRAINT CountryPop 
    CHECK (Population >= 0)); 

这是第二张表。

CREATE TABLE City 
(Name VARCHAR(35), 
Country VARCHAR(4), 
Province VARCHAR(35), 
Population NUMERIC CONSTRAINT CityPop 
    CHECK (Population >= 0), 
Longitude NUMERIC CONSTRAINT CityLon 
    CHECK ((Longitude >= -180) AND (Longitude <= 180)) , 
Latitude NUMERIC CONSTRAINT CityLat 
    CHECK ((Latitude >= -90) AND (Latitude <= 90)) , 
CONSTRAINT CityKey PRIMARY KEY (Name, Country, Province)); 

我的查询必须做到以下几点:

Return the min, max, and average latitude of all cities for all the countries in the table. 
And should be ordered by continent first and country second. 

这是PostgreSQL的。

谢谢你的时间。

回答

1

您不要在您的问题中披露RDBMS:是的MySQL PostgreSQL?

然而,这应在两个工作:

SELECT 
     continent -- not quite sure what this refers to 
    , ctr.Code AS country_code 
    , avg(city.latitude) AS avg_population 
    , min(city.latitude) AS min_population 
    , max(city.latitude) AS max_population 
FROM 
    country ctr 
    JOIN city ON ctr.Code = city.Country 
GROUP BY 
     continent 
    , ctr.Code 
ORDER BY 
     continent 
    , ctr.Code 
; 

GROUP BY条款使计算值是指ctr.Code。

+0

对不起。它在postgres中找到平均值,最小值和最大纬度。 感谢您的支持! – FidelCashflo