SQL:具有不同属性的多个条目

时间:2013-05-17 07:57:54

标签: sql oracle

我想每个邮政编码只有一个条目,但atm我有多个条目。这是代码:

select * from xyz
order by plz

这就是结果:

Zipcode   Longitude   Latitude
-----------------------------------
01067   13,7143948  51,0592796
01067   13,6753     51,0837
01067       
01067   13,6649834  51,0426555
01067   13,7617695  51,0538158
01067   13,75       51,05
01067   13,7366     51,0507
01069   13,7366     51,0507
01069       
01069   13,75       51,05
01069   13,7617695  51,0538158
01069   13,6649834  51,0426555
01069   13,6753     51,0837
01090       
01097   13,6649834  51,0426555
01097   13,7617695  51,0538158
01097   13,6753     51,0837
01097   13,75       51,05

现在我想在我的结果选择中只有那个具有最高“经度”值的邮政编码

感谢

4 个答案:

答案 0 :(得分:0)

select zipcode, max(Longitude), max(Latitude) from xyz
group by zipcode
order by plz

如果需要,你可以使用其他聚合器(min,first,last ...)

答案 1 :(得分:0)

使用 的 GROUP BY

select Zipcode,max(Longitude),max(Latitude) from xyz
group by Zipcode
order by plz

答案 2 :(得分:0)

他只想要经度,所以我想我们应该这样写

select Zipcode, max(Longitude) , Latitude
from xyz
group by zipcode
order by plz  

答案 3 :(得分:0)

分析函数可能适用于此:

select zipcode, longitude, latitude
from (
    select zipcode, longitude, latitude,
        rank() over (partition by zipcode
            order by longitude desc nulls last) as rn
    from xyz
)
where rn = 1
order by zipcode;

强制性SQL Fiddle

内部选择中的rank()在每个邮政编码中分配一个排名,其中纬度最高值的行被排名为1.外部选择只过滤到仅获取那些。