COUNT() OVER を使用したパーティションにわたる個別の値のカウント
COUNT() OVER パーティション関数を使用する場合に個別の値をカウントするという課題を克服するこれは SQL Server でよくある問題です。この記事では、dense_rank() と算術演算の組み合わせを使用して、目的の結果を達成する別のアプローチを検討します。
元のクエリとエラー
元のクエリは計算を試みますCOUNT(DISTINCT) OVER を使用した個別の値の累計:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
ただし、SQL DISTINCT とパーティション関数の非互換性により、サーバーはエラーを生成します。
Dense_rank() を使用した代替解決策
この問題の実際的な解決策は、dense_rank() を利用することです。 ) 関数と単純な算術演算:
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
この式は、各月内の個別の値の累計。その仕組みは次のとおりです:
以上がSQL Server のパーティション内の個別の値をカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。