Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Jumlah Nilai Berbeza yang Berjalan dalam Pemisahan Pelayan SQL?

Bagaimana untuk Mengira Jumlah Nilai Berbeza yang Berjalan dalam Pemisahan Pelayan SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-05 00:06:37814semak imbas

How to Calculate a Running Total of Distinct Values in SQL Server Partitions?

Fungsi PARTITION COUNT() OVER dengan DISTINCT

Menggunakan fungsi PARTITION dengan COUNT() untuk mengira jumlah berjalan nilai berbeza boleh mencabar dalam SQL Server. Walaupun kata kunci DISTINCT disokong dalam fungsi agregat, ia tidak boleh digunakan dalam fungsi partition. Had ini boleh mengecewakan, terutamanya apabila cuba mengira jumlah larian bagi nilai berbeza.

Satu kaedah tradisional untuk mengira kiraan berbeza ialah menggunakan subkueri berkorelasi. Walau bagaimanapun, pendekatan ini boleh menjadi tidak cekap dan sukar untuk dikekalkan.

Nasib baik, terdapat penyelesaian mudah menggunakan dense_rank():

dense_rank() over (partition by [Mth] order by [UserAccountKey]) 
+ dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) 
- 1

Ungkapan ini mengira jumlah berjalan UserAccountKeys yang berbeza dalam setiap bulan. Ia berfungsi dengan terlebih dahulu menyusun nilai dalam tertib menaik, kemudian menyusunnya dalam tertib menurun, dan akhirnya menolak satu daripada jumlah dua pangkat. Pendekatan ini secara berkesan menghapuskan nilai pendua sambil menyediakan kiraan larian bagi nilai yang berbeza.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Nilai Berbeza yang Berjalan dalam Pemisahan Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn