2

したがって、これはかなり単純なはずです。私が見逃している恥ずかしいほど簡単な解決策があると確信していますが、次のようになります。

2 つの数値変数に基づいて数値のグリッドを作成したいと考えています。

より具体的には、各変数の 5 パーセンタイルと 95 パーセンタイルを選択し、それら 2 つの値の差を 100 の部分に分割して、それらでグループ化します。

したがって、基本的に必要なのは疑似コードです

(5th percentile)+(95th percentile-5th percentile)/100*[all numbers from 0 to 100]

次のクエリを使用して、5 番目と 95 番目のパーセンタイルを選択できます。

SELECT Min(subq.lat) as latitude, percentile FROM
(SELECT round(latitude,2) as lat, ntile(100) OVER (order by latitude desc) as    
'percentile' FROM table   ORDER BY latitude DESC) AS subq
where percentile in (5,95)
group by 2

また、0 から 100 までの数字のリストも作成できます。

しかし、これらの 2 つをどのように組み合わせるかは、私にはちょっとわからないことです。

助けていただければ幸いです。

4

2 に答える 2

0

私はあなたが何を求めているのか完全にはわかりませんが、1から100までループして、各セットの計算を実行し、それらを結果テーブルに挿入するのと同じくらい簡単かもしれません:

CREATE TABLE #Results (Counter_ INT, Calc_Value FLOAT)
GO
DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=100)
BEGIN

--Do Stuff
INSERT INTO #Results
SELECT Counter_ = @intFlag
,Calc_Value = (calculation logic)/@intFlag

SET @intFlag = @intFlag + 1
END
GO

'Do Stuff' 部分は 1 ~ 100 の各値に対して実行されます。(計算ロジック) は、使用するロジックに置き換える必要があることは明らかです。これらの値が 1 ~ 100 の定数である場合は、それらを変数として設定して、100 回実行する必要がないようにすることができます。だいたい:

CREATE TABLE #Results (Counter_ INT, Calc_Value FLOAT)
GO
DECLARE @intFlag INT, @Percentile_Value FLOAT = (Calculation Logic)
SET @intFlag = 1
WHILE (@intFlag <=100)
BEGIN

--Do Stuff
INSERT INTO #Results
SELECT Counter_ = @intFlag
,Calc_Value = @Percentile_Value/@intFlag

SET @intFlag = @intFlag + 1
END
GO
于 2013-05-24T01:30:02.497 に答える