Ordre de résolution des requête SQL

L'ordre de résolution standard d'une requête SQL est  :

  1. FROM

  2. WHERE

  3. GROUP BY

  4. HAVING

  5. SELECT

  6. ORDER BY

Usage des alias dans le GROUP BY ou le HAVING : requête non standard, acceptée par certains SGBD

SELECT substring(name,1,1) AS initiale, count(citycode)
FROM city
GROUP BY initiale;
 initiale | count 
----------+-------
 L        |     1
 Z        |     1
 B        |     1
 M        |     1
 P        |     2
 A        |     1

La requête n'est pas standard, les résolutions de l'alias et de la fonction substring sont dans le SELECT, qui est postérieur à la résolution du GROUP BY. Postgres acceptera néanmoins cette syntaxe, ce qui évite de créer une vue ou d'utiliser une sous-requête.

Restriction

Une restriction peut être appliquée avant calcul de l'agrégat, au niveau de la clause WHERE, portant ainsi sur la relation de départ, mais aussi après calcul de l'agrégat sur les résultats de ce dernier, au niveau de la clause HAVING.

AccueilCours > LMD (agrégat) > Ordre de résolution des requête SQL< PrécédentSuivant >