ホームページ >データベース >mysql チュートリアル >パーティションを使用して SQL Server の個別値の累計を効率的に計算するにはどうすればよいですか?
パーティションと Dense_Rank() OVER を使用した個別のカウントの達成
COUNT() OVER を使用して個別の値の累計を計算しようとすると、 DISTINCT キーワードを含めると、多くの場合エラーが発生します。相関サブクエリのような従来のアプローチに頼ることもできますが、より効率的なソリューションが存在します。
SQL Server では、DISTINCT キーワードはパーティション関数内で直接サポートされていません。ただし、dense_rank() 関数を利用すると、同様の結果を効果的に得ることができます。次の式は、個別の値の必要な数を返します:
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
この式は、各月内の各 UserAccountKey の密ランクを昇順と降順で計算し、その後 1 を減算します。結果は正確にその月の一意の UserAccountKey の数であり、求める累計が得られます。
以上がパーティションを使用して SQL Server の個別値の累計を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。