Kiraan Berbeza dengan Fungsi Pembahagian: COUNT() OVER vs. DISTINCT
Soalan ini meneroka penggunaan klausa OVER SQL dalam mengira kiraan yang berbeza . Pengguna cuba menggunakan fungsi COUNT() OVER (PARTITION BY ...) dengan kata kunci DISTINCT untuk mendapatkan jumlah pengguna unik yang sedang berjalan dalam bulan tertentu. Walau bagaimanapun, pendekatan ini menghadapi ralat.
Ralat timbul kerana fungsi OVER SQL Server pada masa ini tidak menyokong kata kunci DISTINCT dalam klausa partition. Akibatnya, pengguna tidak dapat menggunakan pengiraan yang berbeza semasa pembahagian.
Penyelesaian kepada isu ini ialah menggunakan fungsi dense_rank(). Ungkapan berikut mencapai output yang diingini:
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
Dengan menggunakan dense_rank() dua kali dan menolak keputusan, ungkapan itu mengira bilangan nilai berbeza dalam lajur yang ditentukan dalam setiap bulan dengan berkesan. Kaedah ini menyediakan kefungsian yang sama seperti yang dimaksudkan pada asalnya COUNT() OVER (PARTITION BY ...) dengan DISTINCT.
Atas ialah kandungan terperinci Bolehkah COUNT() OVER (PARTITION BY ...) Mengendalikan Kiraan DISTINCT dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!