0

郵便番号ごとに 1 つのエントリだけを作成したいのですが、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

4 に答える 4

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

必要に応じて他のアグリゲーターを使用できます (分、最初、最後...)

于 2013-05-17T07:59:49.370 に答える
0

GROUP BYを使用する

select Zipcode,max(Longitude),max(Latitude) from xyz
group by Zipcode
order by plz
于 2013-05-17T07:59:59.120 に答える
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 としてランク付けされます。

于 2013-05-17T11:04:34.407 に答える