Bemærk, at du ønsker at få summen af løn i Tutorial D :
SUMMARIZE emp BY { job } ADD ( SUM ( sal ) AS total_sal )
Noteaggregering er ikke en relationel operator, og vil derfor ikke udgøre en del af en relationel algebra.
Med hensyn til HAVING
, er det en historisk anomali. Før SQL-92-standarden var det ikke muligt at skrive SELECT
udtryk i FROM
klausul (a.k.a afledte tabeller), dvs. du skulle udføre alt arbejde i én SELECT
udtryk. På grund af SQLs rigide evalueringsrækkefølge opstår den samlede værdi ikke efter WHERE
klausulen er blevet evalueret, dvs. det var umuligt at anvende begrænsning baseret på aggregerede værdier. HAVING
blev indført for at løse dette problem.
Men selv med HAVING
, SQL forblev relationelt ufuldstændig med hensyn til Codd's, indtil afledte tabeller var blevet introduceret. Afledte tabeller gengivet HAVING
overflødig, men bruger HAVING
er stadig populær (hvis Stackoverflow er noget at gå efter):folk ser stadig ud til at kunne lide at bruge en enkelt SELECT
hvor det er muligt og SQL's førnævnte rigiditet med hensyn til evalueringsrækkefølge (projektion udføres sidst i en SELECT
expression) gør brugen af afledt tabel ret omfattende sammenlignet med HAVING
.