Démythifier le GROUP BY

Formation

A distance

Prix sur demande

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Description

  • Typologie

    Formation

  • Méthodologie

    A distance

  • Heures de classe

    3h

  • Dates de début

    Dates au choix

  • Envoi de matériel d'apprentissage

    Oui

Objectifs: Cet article est la traduction de Debunking GROUP BY Myths (disponible ici) et a pour but de vous expliquer le comportement de MySQL vis à vis de la clause SQL GROUP BY.

Les sites et dates disponibles

Lieu

Date de début

A distance

Date de début

Dates au choixInscriptions ouvertes

Questions / Réponses

Ajoutez votre question

Nos conseillers et autres utilisateurs pourront vous répondre

À qui souhaitez-vous addresser votre question?

Saisissez vos coordonnées pour recevoir une réponse

Nous ne publierons que votre nom et votre question

Les Avis

Le programme

Introduction
1. La clause GROUP BY
2. Calcul d'agrégats sur des groupes de lignes
3. Les difficultés avec GROUP BY
4. Comprendre le problème
5. Eviter le problème
6. Inclure ONLY_FULL_GROUP_BY dans le sql_mode de MySQL
7. Que dit « la » norme SQL ?
8. Dépendances fonctionnelles

  • 8-A. Dépendance fonctionnelle et normalisation
  • 8-B. Dépendances fonctionnelles et GROUP BY

9. Pourquoi donc voudrais-je faire cela ?

  • 9-A. Inconvénients ?
  • 9-B. Avantages
  • 9-C. Agrégation sur des colonnes fonctionnellement dépendantes

Conclusion

  • Il existe une légende populaire à propos de la clause SQL GROUP BY. Cette légende soutient que la "norme SQL" impose, dans une requête, que les colonnes référencées dans la liste du SELECT apparaissent également dans la clause GROUP BY, à moins que ces colonnes n'apparaissent exclusivement dans une expression d'agrégation. MySQL est souvent accusé de violer cette norme.
  • Dans cet article, je vais tenter de briser ce mythe et d'apporter par la même occasion un regard plus mesuré sur le traitement du GROUP BY dans MySQL.
  • Pour ce faire, je vais d'abord démontrer que MySQL peut être configuré pour accepter des clauses GROUP BY qui ne comportent que des colonnes dans la liste du SELECT contenues dans des fonctions d'agrégation, rapprochant ainsi le comportement de MySQL de celui des autres célèbres SGBDR.
  • Ensuite, je vais montrer qu'il est très important de bien préciser à quelle version de la norme SQL on fait référence. Les deux versions les plus récentes présentent une définition plus sophistiquée de la relation entre les expressions contenues dans le GROUP BY et la liste du SELECT. Contrairement à une croyance populaire, ces normes n'imposent pas noir sur blanc que toutes les colonnes non contenues dans les fonctions d'agrégation de la liste du SELECT apparaissent dans la clause GROUP BY.
  • Enfin, j'emploierai un exemple simple mais concret pour illustrer de manière informelle ce que je pense que les dernières versions de la norme SQL essaient d'exprimer. Avec un peu de chance, j'arriverai à vous convaincre du bien-fondé de ne pas toujours inclure aveuglément toutes les colonnes non agrégées de la liste du SELECT dans la clause GROUP BY.
  • Avant de plonger dans le vif du sujet, je vais commencer par une brève présentation du GROUP BY, pour ceux qui ne sont pas familiers de cette notion. En introduction, je présenterai pourquoi la plupart des SGBD imposent que toutes les colonnes non agrégées et référencées dans la liste du SELECT apparaissent dans la clause GROUP BY, et pourquoi les utilisateurs rencontrent parfois des difficultés à cause de la façon dont MySQL traite la clause GROUP BY.

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Démythifier le GROUP BY

Prix sur demande