Maison >base de données >tutoriel mysql >Comment compter efficacement les lignes conditionnelles par priorité en SQL ?
SQL compte efficacement les lignes conditionnelles triées par priorité
Supposons que vous ayez une table qui stocke les informations sur la tâche, avec une colonne indiquant la priorité (un entier compris entre 1 et 5). Pour générer un rapport graphique affichant le nombre de tâches par priorité, vous devez créer cinq champs supplémentaires, chacun comptant le nombre de lignes avec une valeur de priorité spécifique.
La solution réside dans l'utilisation de l'instruction CASE dans la requête SELECT. Le code suivant fournit un moyen efficace et performant d'obtenir le résultat souhaité :
<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>
Cette requête utilise essentiellement la fonction SUM() pour compter le nombre de lignes pour chaque niveau de priorité. Cependant, il utilise également l'instruction CASE pour exclure les lignes qui ne remplissent pas certaines conditions de priorité. Le résultat est un tableau avec des champs supplémentaires représentant le nombre de conditions.
Pour inclure uniquement le nombre de tâches et non le jobID et le JobName dans les résultats, supprimez simplement ces colonnes de l'instruction SELECT et supprimez la clause GROUP BY.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!