Bedingtes Zählen in SQL Server: Ein CASE-basierter Ansatz
Aggregatfunktionen sind für die Datenanalyse in SQL Server unerlässlich. Während COUNT
eine Gesamtzeilenanzahl liefert, erfordert die bedingte Zählung eine andere Strategie. In SQL Server fehlt ein direktes COUNTIF
-Äquivalent, aber wir können das gleiche Ergebnis mit SUM
und CASE
erzielen.
Stellen Sie sich vor, Sie müssten den Prozentsatz der Zeilen berechnen, in denen MyColumn
gleich „1“ ist. Ein naiver Versuch könnte so aussehen:
<code class="language-sql">SELECT UID, COUNT(UID) AS TotalRecords, SUM(ContractDollars) AS ContractDollars, (COUNTIF(MyColumn, 1) / COUNT(UID) * 100) -- Incorrect: COUNTIF not supported FROM dbo.AD_CurrentView GROUP BY UID HAVING SUM(ContractDollars) >= 500000</code>
Die COUNTIF
-Funktion ist keine Standard-SQL-Server-Funktion. Die Lösung liegt in der Nutzung von SUM
und CASE
:
<code class="language-sql">SELECT UID, COUNT(UID) AS TotalRecords, SUM(ContractDollars) AS ContractDollars, (SUM(CASE WHEN MyColumn = 1 THEN 1 ELSE 0 END) / COUNT(UID) * 100) -- Correct conditional count FROM dbo.AD_CurrentView GROUP BY UID HAVING SUM(ContractDollars) >= 500000</code>
Die CASE
-Anweisung überprüft das MyColumn
jeder Zeile. Wenn es „1“ ist, wird 1 zurückgegeben. Andernfalls wird 0 zurückgegeben. SUM
summiert dann diese Einsen und Nullen und zählt effektiv die Vorkommen von „1“ in MyColumn
. Dies ermöglicht eine genaue bedingte Zählung und ermöglicht präzise Berechnungen und aufschlussreiche Datenanalysen.
Das obige ist der detaillierte Inhalt vonWie führe ich eine bedingte Zählung in SQL Server ohne COUNTIF durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!