2016-10-06 20 views
0

Hacker Rank - Weather Observation Station 19ユークリッド距離

5つのフィールド、すなわちID、CITY、STATE 、北緯と西経のためのデータを保持するテーブルのSTATIONを考えます。

+-------------+------------+ 
| Field  | Type  | 
+-------------+------------+ 
| ID   | INTEGER | 
| CITY  | VARCHAR(21)| 
| STATE  | VARCHAR(2) | 
| LAT_N  | NUMERIC | 
| LONG_W  | NUMERIC | 
+-------------+------------+ 

P1(B)とP2(C、D)( B)ノーザン緯度との最小値と最大値である2次元平面上の2点である(C、D)であることを考えます Western Longitudeの最小値と最大値。 にクエリを書くと、ポイントP1とP2のユークリッド距離が4桁まで 桁まで印刷されます。

select round((abs(max(lat_n)-max(long_w)) + abs(min(long_w)-min(lat_n))),4) from station; 

が、それは3つの小数点への答えを与えているが、私は4進ポイントを必要とする:Oracleの

私のソリューションです。

答えて

0

を試してみてください。

DECLARE @a numeric(36,4),@b numeric(36,4),@c numeric(36,4),@d numeric(36,4) 
SET @a=(SELECT MIN(CAST(ROUND(LAT_N,4) as numeric(36,4))) FROM STATION); 
SET @b=(SELECT MIN(CAST(ROUND(LONG_W ,4) as numeric(36,4))) FROM STATION); 
SET @c=(SELECT MAX(CAST(ROUND(LAT_N,4) as numeric(36,4))) FROM STATION); 
SET @d=(SELECT MAX(CAST(ROUND(LONG_W ,4) as numeric(36,4))) FROM STATION); 
SELECT DISTINCT CAST(ROUND((POWER(((POWER((@[email protected]),2))+(POWER((@[email protected]),2))),0.5)),4) as numeric(36,4)) FROM STATION 
+0

ユークリッド距離=平方根(((X2-X1)^ 2)+((Y2-Y1)^ 2)) 平方根が(何か)のように記述することができます^(0.5) 私はそのように実装しました。 CAST(ROUND(LONG_W、4)as numeric(36,4))は、小数点以下4桁までの値を取るためのものです。 –

+0

あなたの提案をありがとう。 –

-1

これを試してみてください:

select round(sqrt(POWER((MAX(LAT_N) - MIN(LAT_N)),2) 
    + POWER((MAX(LONG_W) - MIN(LONG_W)),2)),4) 
from station; 
関連する問題