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!