SQL Filtrez les résultats de GROUP BY en utilisant une clause HAVING


Exemple

Une clause HAVING filtre les résultats d'une expression GROUP BY. Remarque: Les exemples suivants utilisent la base de données exemple de la bibliothèque .

Exemples:

Renvoie tous les auteurs ayant écrit plus d'un livre ( exemple en direct ).

SELECT
  a.Id,
  a.Name,
  COUNT(*) BooksWritten
FROM BooksAuthors ba
  INNER JOIN Authors a ON a.id = ba.authorid
GROUP BY
  a.Id,
  a.Name
HAVING COUNT(*) > 1    -- equals to HAVING BooksWritten > 1
;

Retourne tous les livres qui ont plus de trois auteurs ( exemple live ).

SELECT
  b.Id,
  b.Title,
  COUNT(*) NumberOfAuthors
FROM BooksAuthors ba
  INNER JOIN Books b ON b.id = ba.bookid
GROUP BY
  b.Id,
  b.Title
HAVING COUNT(*) > 3    -- equals to HAVING NumberOfAuthors > 3
;