2017-10-06 7 views
1

テストサーバーでSQL 2014を使用して作成したクエリがあります。他のインスタンスをSQL Server 2008 R2に配置するようになりました。 PERCENTILE_CONT関数をSQL Server 2008 R2と互換性のあるものに変換できますか?SQL Server 2008 R2のPERCENTILE_CONT関数を変換する

基本的には、対応するMBperSecを持つサーバーのデータベースがあります。私はすべてのサーバー間で上限と下限を取得したい。 Percentile25が上限でPercentile75です。

Percentile25 = (PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY x.MBperSec) OVER (PARTITION BY x.block, x.operation)), 
Percentile75 = (PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY x.MBperSec) OVER (PARTITION BY x.block, x.operation)), 

答えて

1

以下が妥当な近似である - percentile_cont()よりも本当に多くのpercentile_disc()が、それは違いを作る場合、私は知らない。

select . . ., 
     max(case when seqnum <= cnt * 0.25 then x.MBperSec end) over (partition by x.block, x.operation) as percentile_25, 
     max(case when seqnum <= cnt * 0.75 then x.MBperSec end) over (partition by x.block, x.operation) as percentile_75 
from (select x.*, 
      row_number() over (partition x.block, x.operation 
           order by x.MBperSec 
           ) as seqnum, 
      count(*) over (partition x.block, x.operation) as cnt 
     from Table_CPU x 
     where x.Operation = 'reading' and 
      replace(x.block, 'KB', '') in ('64') 
    ) x 
+0

PERCENTILE_DISCは/あなたのセット内の値を返す研究を1としてPERCENTILE_CONTは補間します。私はPERCENTILE_CONTが私にもっと正確な出力を与えると思うが、感謝@Gordon Linoff –

関連する問題