Maison >base de données >tutoriel mysql >Comment puis-je utiliser la clause GROUP BY de SQL pour agréger des données en plages ?

Comment puis-je utiliser la clause GROUP BY de SQL pour agréger des données en plages ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 21:27:11572parcourir

How Can I Use SQL's GROUP BY Clause to Aggregate Data into Ranges?

SQL GROUP BY pour l'agrégation de plages de données

L'analyse de la répartition des données sur différentes plages est un aspect crucial de l'analyse des données. La clause GROUP BY de SQL offre un mécanisme robuste pour agréger les données en groupes prédéfinis, facilitant la génération de tableaux récapitulatifs et de rapports concis.

Création de groupes basés sur une plage

Pour classer les données dans des plages spécifiques, nous exploitons l'instruction CASE WHEN pour attribuer des valeurs à une nouvelle colonne en fonction de conditions définies. Cette colonne nouvellement créée sert ensuite de base au regroupement des données à l'aide de la clause GROUP BY.

Exemple illustratif : regroupement de plages de scores

Considérons un scénario dans lequel nous devons déterminer la fréquence des scores dans des intervalles spécifiques (par exemple, 0-9, 10-19, 20-29). La requête suivante construit une nouvelle colonne représentant ces plages de scores :

<code class="language-sql">SELECT
  CASE
    WHEN score BETWEEN 0 AND 9 THEN '0-9'
    WHEN score BETWEEN 10 AND 19 THEN '10-19'
    ELSE '20-99'
  END AS score_range
FROM scores;</code>

Cette requête génère une colonne score_range, attribuant chaque score à sa plage correspondante.

Agrégation avec GROUP BY

Pour calculer le nombre de scores dans chaque plage, nous utilisons la fonction d'agrégation COUNT(*) en conjonction avec la clause GROUP BY. La requête ci-dessous y parvient :

<code class="language-sql">SELECT
  score_range,
  COUNT(*) AS score_count
FROM (
  SELECT
    CASE
      WHEN score BETWEEN 0 AND 9 THEN '0-9'
      WHEN score BETWEEN 10 AND 19 THEN '10-19'
      ELSE '20-99'
    END AS score_range
  FROM scores
) AS ranged_scores
GROUP BY
  score_range;</code>

Sortie

Le tableau résultant affiche deux colonnes : score_range et score_count, fournissant un aperçu clair de la répartition des scores sur les plages définies.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn