Heim >Datenbank >MySQL-Tutorial >Wie kann man bedingte Zeilen in SQL effizient nach Priorität zählen?

Wie kann man bedingte Zeilen in SQL effizient nach Priorität zählen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-10 07:39:45620Durchsuche

How to Efficiently Count Conditional Rows by Priority in SQL?

SQL zählt effizient bedingte Zeilen, sortiert nach Priorität

Angenommen, Sie haben eine Tabelle, in der Jobinformationen gespeichert sind, mit einer Spalte, die die Priorität angibt (eine Ganzzahl zwischen 1 und 5). Um einen Diagrammbericht zu erstellen, der die Anzahl der Jobs nach Priorität anzeigt, müssen Sie fünf zusätzliche Felder erstellen, von denen jedes die Anzahl der Zeilen mit einem bestimmten Prioritätswert zählt.

Die Lösung liegt in der Verwendung der CASE-Anweisung in der SELECT-Abfrage. Der folgende Code bietet eine effiziente und leistungsstarke Möglichkeit, die gewünschte Ausgabe zu erzielen:

<code class="language-sql">SELECT 
    jobID, JobName,
    SUM(CASE WHEN Priority = 1 THEN 1 ELSE 0 END) AS priority1,
    SUM(CASE WHEN Priority = 2 THEN 1 ELSE 0 END) AS priority2,
    SUM(CASE WHEN Priority = 3 THEN 1 ELSE 0 END) AS priority3,
    SUM(CASE WHEN Priority = 4 THEN 1 ELSE 0 END) AS priority4,
    SUM(CASE WHEN Priority = 5 THEN 1 ELSE 0 END) AS priority5
FROM 
    Jobs
GROUP BY 
    jobID, JobName;</code>

Diese Abfrage verwendet im Wesentlichen die Funktion SUM(), um die Anzahl der Zeilen für jede Prioritätsstufe zu zählen. Es verwendet jedoch auch die CASE-Anweisung, um Zeilen auszuschließen, die bestimmte Prioritätsbedingungen nicht erfüllen. Das Ergebnis ist eine Tabelle mit zusätzlichen Feldern, die die Bedingungsanzahl darstellen.

Um nur die Jobanzahl und nicht die Job-ID und den Jobnamen in die Ergebnisse einzubeziehen, entfernen Sie einfach diese Spalten aus der SELECT-Anweisung und entfernen Sie die GROUP BY-Klausel.

Das obige ist der detaillierte Inhalt vonWie kann man bedingte Zeilen in SQL effizient nach Priorität zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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