ホームページ >データベース >mysql チュートリアル >パーティションを使用して SQL Server の個別値の累計を効率的に計算するにはどうすればよいですか?

パーティションを使用して SQL Server の個別値の累計を効率的に計算するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-03 22:26:40468ブラウズ

How Can I Efficiently Calculate a Running Total of Distinct Values in SQL Server Using Partitions?

パーティションと 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。