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!