私は次のクエリを持っていますが、大量のデータ(〜3000行)がなくても実行が少し遅く、ロジックが少し頭を悩ませています-クエリの最適化や別の方法論の助けを得ることを望んでいました:
Select companypartnumber, (PartTotal + IsNull(Cum_Lower_Ranks, 0) ) / Sum(PartTotal) over() * 100 as Cum_PC_Of_Total
FROM PartSalesRankings PSRMain
Left join
(
Select PSRTop.Item_Rank, Sum(PSRBelow.PartTotal) as Cum_Lower_Ranks
from partSalesRankings PSRTop
Left join PartSalesRankings PSRBelow on PSRBelow.Item_Rank < PSRTop.Item_Rank
Group by PSRTop.Item_Rank
) as PSRLowerCums on PSRLowerCums.Item_Rank = PSRMain.Item_Rank
PartSalesRankingsテーブルは、部品番号の指定であるCompanyPartNumber(bigint)、総売上高であるPartTotal(decimal 38,5)、および総売上高に基づくアイテムのランクであるItem_Rank(bigint)で構成されています。
パーセンタイルに基づいてパーツをカテゴリに分類しようとしています。つまり、「A」アイテムは上位5%、「B」アイテムは次の15%、「C」アイテムは下位になります。 80パーセンタイル。私が作成したビューは正常に機能します。実行には約3秒かかりますが、これは私の目的では非常に遅いです。ボトルネックを上記のクエリに絞り込みました。ご協力いただければ幸いです。