以下のクエリを使用してパーセンタイルを得ることができました。私はカウント/分/最大/平均のために別のものを使用しました。
SELECT DISTINCT mj.title, PERCENTILE_DISC(.1) WITHIN GROUP (ORDER BY e.base)
OVER (PARTITION BY mj.title) AS '10th', PERCENTILE_DISC(.25) WITHIN GROUP (ORDER
BY e.base) OVER (PARTITION BY mj.title) AS '25th', PERCENTILE_DISC(.5) WITHIN
GROUP (ORDER BY e.base) OVER (PARTITION BY mj.title) AS '50th',
PERCENTILE_DISC(.75) WITHIN GROUP (ORDER BY e.base) OVER (PARTITION BY mj.title)
AS '75th', PERCENTILE_DISC(.9) WITHIN GROUP (ORDER BY e.base) OVER (PARTITION BY
mj.title) AS '90th' FROM dbo.ps_employee e FULL OUTER JOIN dbo.ps_jobs j on
e.title = j.job FULL OUTER JOIN dbo.ps_masterjobs mj
ON j.masterID = mj.ID;
PERCENTILE_DISC COUNT/MIN/MAX/AVG(列)のような集計関数ではありません。この例外は、このファンクションで使用され、GROUPには使用されない列によって生成されます(e.base)。最も単純なソリューションは、別のクエリを作成して百分位数を計算することです。 –
(ORDER BY e.base)を削除するとビジネスロジックが変更されますか? –
いいえ、私はORDER BYがPERCENTILE_DISC関数で必要と考えましたか? – gattoun