パーティション関数による個別カウント: COUNT() OVER vs. DISTINCT
この質問では、個別カウントの計算における SQL の OVER 句の使用法について説明します。 。ユーザーは、COUNT() OVER (PARTITION BY ...) 関数を DISTINCT キーワードとともに使用して、指定された月内のユニーク ユーザーの累計を取得しようとします。ただし、この方法ではエラーが発生します。
このエラーは、SQL Server の OVER 関数が現在パーティション句内の DISTINCT キーワードをサポートしていないために発生します。その結果、ユーザーはパーティショニング中に個別のカウントを適用できなくなります。
この問題の解決策は、dense_rank() 関数を利用することです。次の式は、目的の出力を実現します。
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
dense_rank() を 2 回適用し、その結果を減算することで、式は各月内の指定された列内の個別の値の数を効果的にカウントします。このメソッドは、当初意図していた DISTINCT.
を使用した COUNT() OVER (PARTITION BY ...) と同じ機能を提供します。以上がSQL Server で COUNT() OVER (PARTITION BY ...) は DISTINCT カウントを処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。