Les fonctions d'agrégats dans MySQL sont utilisées pour effectuer des calculs sur un ensemble de valeurs et renvoyer une seule valeur. Voici comment utiliser les fonctions agrégées les plus courantes:
Count () : Cette fonction renvoie le nombre de lignes qui correspondent à une condition spécifiée. Il peut compter toutes les lignes ou seulement les lignes où l'expression n'est pas nulle.
<code class="sql">SELECT COUNT(*) FROM employees; SELECT COUNT(employee_id) FROM employees WHERE department = 'IT';</code>
Sum () : Cette fonction calcule la somme totale d'une colonne numérique. Il ignore les valeurs nuls.
<code class="sql">SELECT SUM(salary) FROM employees WHERE department = 'Sales';</code>
AVG () : Cette fonction calcule la moyenne d'une colonne numérique. Il ignore également les valeurs nuls.
<code class="sql">SELECT AVG(salary) FROM employees WHERE department = 'Marketing';</code>
Min () : Cette fonction renvoie la plus petite valeur dans une colonne spécifiée.
<code class="sql">SELECT MIN(salary) FROM employees;</code>
Max () : Cette fonction renvoie la valeur la plus importante dans une colonne spécifiée.
<code class="sql">SELECT MAX(salary) FROM employees;</code>
La clause GROUP BY
est utilisée en conjonction avec des fonctions agrégées aux lignes de groupe qui ont les mêmes valeurs dans des colonnes spécifiées en lignes sommaires. Voici comment vous pouvez l'utiliser:
<code class="sql">SELECT department, COUNT(*) as employee_count, AVG(salary) as avg_salary FROM employees GROUP BY department;</code>
Dans cet exemple, les lignes dans le tableau employees
sont regroupées par la colonne department
. La fonction COUNT(*)
compte le nombre d'employés dans chaque département, et AVG(salary)
calcule le salaire moyen au sein de chaque département.
Points clés à retenir:
GROUP BY
.GROUP BY
est généralement utilisée lorsque vous souhaitez appliquer les fonctions agrégées aux données groupées.Lorsque vous travaillez avec des fonctions agrégées dans MySQL, il est important d'éviter les erreurs courantes suivantes:
Oubliant d'utiliser Group By : Si vous incluez des colonnes non agrégées dans votre instruction SELECT ainsi que des fonctions agrégées, vous devez utiliser GROUP BY
pour ces colonnes. Le défaut de le faire entraînera une erreur.
<code class="sql">-- Incorrect SELECT department, COUNT(*) FROM employees; -- Correct SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
GROUP BY
pour éviter les erreurs ou les résultats inattendus.SUM
et AVG
ignorent les valeurs NULL
. Si les valeurs NULL
sont significatives, vous devrez peut-être les gérer séparément.SUM
et AVG
sont destinées aux données numériques. Les utiliser sur des types de données non nucères (par exemple, chaînes) entraînera des erreurs ou des résultats inattendus.COUNT(col_name)
compte les valeurs non nulles dans la colonne spécifiée, tandis que COUNT(*)
compte toutes les lignes, y compris celles avec des valeurs nulles dans d'autres colonnes.L'optimisation des requêtes avec des fonctions agrégées peut améliorer considérablement les performances. Voici quelques stratégies:
Index d'utilisation : Assurez-vous que les colonnes impliquées dans le WHERE
, GROUP BY
et ORDER BY
les clauses sont indexées. Cela peut accélérer le processus d'agrégation.
<code class="sql">CREATE INDEX idx_department ON employees(department);</code>
Évitez d'utiliser SELECT * : Au lieu d'utiliser SELECT *
, spécifiez uniquement les colonnes dont vous avez besoin. Cela réduit la quantité de données qui doivent être traitées.
<code class="sql">-- Instead of SELECT * FROM employees GROUP BY department; -- Use SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
Utilisez où avant le groupe par : filtrez autant de lignes que possible en utilisant WHERE
avant d'appliquer GROUP BY
. Cela réduit le nombre de lignes qui doivent être regroupées.
<code class="sql">SELECT department, COUNT(*) FROM employees WHERE salary > 50000 GROUP BY department;</code>
Envisagez d'utiliser des sous-requêtes ou des tables dérivées : dans certains cas, l'utilisation d'une sous-requête pour pré-agrégation des données avant d'appliquer l'agrégation finale peut améliorer les performances.
<code class="sql">SELECT d.department, SUM(e.total_salary) as total_department_salary FROM ( SELECT department, SUM(salary) as total_salary FROM employees GROUP BY employee_id, department ) e JOIN departments d ON e.department = d.department GROUP BY d.department;</code>
Utilisez Expliquez : utilisez la déclaration EXPLAIN
pour analyser le plan d'exécution de votre requête. Cela peut vous aider à identifier les goulots d'étranglement potentiels et à optimiser en conséquence.
<code class="sql">EXPLAIN SELECT department, COUNT(*) FROM employees GROUP BY department;</code>
En appliquant ces techniques d'optimisation, vous pouvez améliorer considérablement les performances des requêtes qui utilisent des fonctions agrégées dans MySQL.
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!