0

いくつかの値を含む列があります:

値
 10
 20
 30
 40
 50

基本的に次のような2つの列を提供するクエリが必要です:

値 PercentageValues
10 0
20×
30歳
40ズ
50 100

値の計算方法は次のとおりです。10( min) は 0 % と見なされ、50( max) は 100% と見なされます。したがって、10 の差である x は次のminようになります。

x= 100/(50-10) * 10 = 25

PS: 理想的には、Oracle と SQL Server の両方で実行できるクエリが必要です。

4

2 に答える 2

2

ウィンドウ関数を使用してこれを行うことができます。

select t.value,
       (value - minvalue) * 100.0/(maxvalue - minvalue) 
from (select t.*,
             min(value) over () as minvalue,
             max(value) over () as maxvalue
      from t
     ) t

明示的な結合でも同じことができます。

select t.value,
       (value - minvalue) * 100.0/(maxvalue - minvalue) 
from t cross join
     (select min(value) as minvalue, max(value) as maxvalue
      from t
     ) const
于 2013-04-03T17:53:15.323 に答える
-1
select  100.0 / (maxval - minval) * ([Values] - minval)
from    (
        select  *
        ,       min([Values]) over () as minval
        ,       max([Values]) over () as maxval
        from    Table1
        ) SubQuerALias

SQL Fiddle の例。

于 2013-04-03T17:51:34.897 に答える