0

次の構造のテーブルがあります。

create table FindMedians 
( GroupByColumn varchar(100) 
, TimeInterval_1 int 
, TimeInterval_2 int 
, TimeInterval_3 int 
);

各グループの各時間間隔の中央値を見つける必要があります。各列の中央値を個別に計算し、それらをUNIONしてから、ピボットして最終結果を次のように取得しています。

GroupByColumn 中央値 1 中央値 2 中央値 3

Sqlサーバーで中央値を計算する関数のソリューションで指定されたクエリを使用する

注:クエリを使用しているだけで、関数は作成していません。

元のテーブルには 50 万行近い行があり、列ごとに中央値を個別に計算しようとすると時間がかかります。列ごとに個別に計算することなく、1 つのクエリですべての列の中央値を取得できるパフォーマンスの高い方法はありますか?

ありがとう

4

2 に答える 2

1

中央値を計算するにはデータを並べ替える必要があるため、データが適切でない限り、中央値を個別に並べ替えて計算する以外に方法はありません。

于 2012-09-10T12:58:40.777 に答える