2011-10-10 82 views
2

我有以下表包含以下数据:Group按查询 - 任何其他方式?

http://img513.imageshack.us/img513/9039/mycities.png

CREATE语句和刀片是在http://snipt.org/xoKl

该表是城市列表,每个城市属于一个地区和一个国家,每个城市都有创建日期。这里的目标是为每个“国家/地区”对获得最古老的城市列表。我们需要在加拿大,在美国西海岸最古老的城市等东海岸最古老的城市...

,我现在使用的查询:

SELECT * FROM MyCities 
INNER JOIN 
    (SELECT Country, Region, MIN(FoundingDate) AS CityFoundingDate 
     FROM MyCities 
    GROUP BY Country, Region) AS subquery  
     ON subquery.CityFoundingDate = MyCities.FoundingDate 
     AND MyCities.Country = subquery.Country 
     AND MyCities.Region = subquery.Region 

我只是想知道是否有其他方式通过查询或不查询该组。 :-)
此查询是否有效?
期待讨论。

回答

3

那么呢?

select country, region, city from MyCities mc1 
where foundingDate <= ALL (
    select foundingDate from MyCities as mc2 
    where mc1.country = mc2.country and mc1.region = mc2.region 
) 
1

这样的事情呢? 应该在甲骨文工作(虽然我现在不能测试)

SELECT country, region, city, foundingdate 
FROM (
SELECT country, region, city, foundingdate, MIN(founding_date) OVER PARTITION BY (country, region) min_date 
FROM mycities) WHERE foundingdate=min_date 

但是,如果在同一个国家/地区成立于同年两市?