Heim > Datenbank > MySQL-Tutorial > Wie führe ich eine bedingte Zählung in SQL Server ohne COUNTIF durch?

Wie führe ich eine bedingte Zählung in SQL Server ohne COUNTIF durch?

Mary-Kate Olsen
Freigeben: 2025-01-11 12:56:47
Original
791 Leute haben es durchsucht

How to Perform Conditional Counting in SQL Server Without COUNTIF?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage