Heim >Datenbank >MySQL-Tutorial >Wie zähle ich eindeutige Programmnamen in SQL Server mithilfe von COUNT(DISTINCT) korrekt?
Diese Anleitung zeigt, wie Sie eindeutige Programmnamen in SQL Server mithilfe der Aggregatfunktion COUNT(DISTINCT)
genau zählen. Wir werden ein häufiges Abfrageproblem und seine Lösung untersuchen.
Die Herausforderung:
Stellen Sie sich eine Tabelle mit dem Namen cm_production
vor, die Spalten wie ticket_number
, program_type
, program_name
und push_number
enthält. Das Ziel besteht darin, die Anzahl der unterschiedlichen Programmnamen für jedes program_type
und push_number
zu bestimmen. Ein erster Versuch könnte so aussehen:
<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>
Diese Abfrage liefert jedoch nicht die korrekte Anzahl eindeutiger Programmnamen.
Die Lösung:
Der richtige Ansatz besteht in der Verwendung von 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>
Erklärung:
COUNT(DISTINCT program_name)
zählt nur die eindeutigen Nicht-Null-Werte von program_name
innerhalb jeder program_type
-Gruppe. Doppelte Programmnamen werden ignoriert. Dies ergibt die genaue Anzahl unterschiedlicher Programmnamen für jeden Programmtyp.
Weitere Überlegungen:
Das Schlüsselwort DISTINCT
ist mit verschiedenen Aggregatfunktionen kompatibel, einschließlich SUM()
, MIN()
und MAX()
. Bei Verwendung mit COUNT()
entspricht es funktional COUNT(DISTINCT 1)
oder COUNT(NOT NULL)
.
Das obige ist der detaillierte Inhalt vonWie zähle ich eindeutige Programmnamen in SQL Server mithilfe von COUNT(DISTINCT) korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!