Statistische Bedingungswerte in SQL-Spalten
Angenommen, Sie haben eine Spalte namens „Priorität“, die ganzzahlige Werte zwischen 1 und 5 enthält. Sie möchten ein Diagramm erstellen, das die Anzahl für jeden Prioritätswert zeigt. Beispielsweise sollte „Priorität1“ die Anzahl der Zeilen mit einem „Prioritäts“-Wert von 1 zählen, „Priorität2“ sollte die Anzahl der Zeilen mit einem „Prioritäts“-Wert von 2 zählen und so weiter.
Lösung:
Dazu können Sie eine SQL-Abfrage mit einer bedingten Aggregatfunktion verwenden:
<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 bedingte Aggregation, um die Anzahl der Zeilen für jeden Prioritätswert zu zählen. Der CASE-Ausdruck prüft den Wert von Priority und gibt 1 zurück, wenn er mit dem erforderlichen Prioritätswert übereinstimmt, andernfalls gibt er 0 zurück. Die SUM-Funktion akkumuliert diese Werte dann, um die endgültige Zählung zu ermitteln.
Wenn Sie die Spalten jobID und JobName in den Ergebnissen nicht benötigen, können Sie sie aus der SELECT-Klausel entfernen und die GROUP BY-Klausel entfernen:
<code class="language-sql">SELECT 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;</code>
Das obige ist der detaillierte Inhalt vonWie zähle ich bedingte Werte in einer SQL-Spalte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!