0

結果セットを取得して、サイズの異なる 3 つのグループに分割しようとしています。ntile、rank、row number を見てきましたが、わかりません。

上位 n % を選択できます。しかし、次の n% が必要になります。

次の異なるサイズのグループに分割する必要があります。15%、42.5%、42.5%。15% のコントロール グループを作成し、2 つのバージョンを残りのレコードから均等に分割します。

要件は以前は 50 対 50 の分割であり、行番号でモジュラスを使用しましたが、それがここでも機能するかどうかはわかりません。

これを達成するために update ステートメントまたはストアド プロシージャを記述できますが、代わりにクエリで実行したいと考えています。

4

1 に答える 1

0

これ、またはそのようなものは、それを行う必要があります:

DECLARE @TotalRows float

SELECT @TotalRows = count(*)
 from MyTable

SELECT Col1, Col2, ColEtc, Ranking
  ,case
     when Ranking < @TotalRows * .15 then 1
     when Ranking < @TotalRows * .575 then 2
     else 3
   end  Ranking
 from (select Col1, Col2, ColEtc
         ,row_number() over (order by Col1) Ranking
        from MyTable) xx
 order by xx.Ranking, xx.Col1, xx.Col2

2つのクエリをCTEと組み合わせることができたかもしれませんが、それは非常に複雑に思えます。データに固有のフリンジケースを確認する必要があります。

于 2012-10-02T22:40:44.900 に答える