Panduan ini menunjukkan cara mengira nama program unik dalam SQL Server dengan tepat menggunakan fungsi agregat COUNT(DISTINCT)
. Kami akan memeriksa isu pertanyaan biasa dan penyelesaiannya.
Cabaran:
Pertimbangkan jadual bernama cm_production
yang mengandungi lajur seperti ticket_number
, program_type
, program_name
dan push_number
. Matlamatnya adalah untuk menentukan bilangan nama program yang berbeza bagi setiap program_type
dan push_number
. Percubaan awal mungkin kelihatan seperti ini:
<code class="language-sql">DECLARE @push_number INT; SET @push_number = [HERE_ADD_NUMBER]; SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] FROM cm_production WHERE push_number=@push_number GROUP BY program_type</code>
Pertanyaan ini, walau bagaimanapun, tidak memberikan kiraan nama program unik yang betul.
Penyelesaian:
Pendekatan yang betul melibatkan penggunaan COUNT(DISTINCT)
:
<code class="language-sql">SELECT program_type AS [Type], COUNT(DISTINCT program_name) AS [Count] FROM cm_production WHERE push_number = @push_number GROUP BY program_type</code>
Penjelasan:
COUNT(DISTINCT program_name)
hanya mengira nilai unik, bukan nol program_name
dalam setiap kumpulan program_type
. Nama program pendua tidak diendahkan. Ini menghasilkan kiraan tepat nama program yang berbeza untuk setiap jenis program.
Pertimbangan Lanjut:
Kata kunci DISTINCT
serasi dengan pelbagai fungsi agregat, termasuk SUM()
, MIN()
dan MAX()
. Apabila digunakan dengan COUNT()
, ia berfungsi bersamaan dengan COUNT(DISTINCT 1)
atau COUNT(NOT NULL)
.
Atas ialah kandungan terperinci Bagaimana Mengira Nama Program Berbeza dengan betul dalam Pelayan SQL Menggunakan COUNT(DISTINCT)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!