ホームページ >データベース >mysql チュートリアル >SQL Server で COUNT() OVER (PARTITION BY ...) は DISTINCT カウントを処理できますか?

SQL Server で COUNT() OVER (PARTITION BY ...) は DISTINCT カウントを処理できますか?

DDD
DDDオリジナル
2025-01-03 20:04:42856ブラウズ

Can COUNT() OVER (PARTITION BY ...) Handle DISTINCT Counts in SQL Server?

パーティション関数による個別カウント: 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 サイトの他の関連記事を参照してください。

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