2016-10-15 14 views
0

テーブル/クエリで最大値を選択する際にSQLの問題があります。私は、集約式とタプルの関連する主キーから返される最大値を返そうとしています。SQL - クエリのMAX(値)の関連する主キーと値を取得する

私はselect文に集約関数だけを含めると最大値を表示する1タプルを返すことができますが、主キーと集約式の最大値の両方で1タプルだけ返すことはできません。ここで

は、私のクエリの例です:

SELECT id, MAX(SQRT((POWER((x-(-28)),2) + POWER((y-(151)),2)))) as distance 
FROM table 
GROUP BY id; 

あなたは、これはすべてのIDと機能から関連する値を返す予想されるように。最大値と関連付けられたIDを持つタプルは1つだけ返されません。

これを解決するにはどうすればよいですか?これを行うには

答えて

1

一つの方法は、降順であなたの表現で注文すると、最初の行だけを選択することである:

select id, distance 
    from (select id, SQRT((POWER((x-(-28)),2) + POWER((y-(151)),2))) as distance 
      from table 
     order by distance desc) 
where rownum < 2 

は、Oracle 12cが始まって、あなたも達成するためにfetch first n rows構文を活用することができます同じこと:

0:

select id, SQRT((POWER((x-(-28)),2) + POWER((y-(151)),2))) as distance 
    from table 
order by distance desc 
fetch first row only 

複数の行を共有同じ最大距離の値は、あなたも便利なつながりをサポートするための構文を調整することができた場合

関連する問題