Merk op dat u de som van het salaris wilt ontvangen, in Tutorial D :
SUMMARIZE emp BY { job } ADD ( SUM ( sal ) AS total_sal )
Notenaggregatie is geen relationele operator en zal daarom geen deel uitmaken van een relationele algebra.
Wat betreft HAVING
, is het een historische anomalie. Vóór de SQL-92-standaard was het niet mogelijk om SELECT
. te schrijven uitdrukkingen in de FROM
clausule (ook wel afgeleide tabellen genoemd) d.w.z. je moest al het werk in één SELECT
doen uitdrukking. Vanwege de rigide evaluatievolgorde van SQL komt de geaggregeerde waarde niet tot stand na de WHERE
clausule is geëvalueerd, d.w.z. het was onmogelijk om een beperking toe te passen op basis van geaggregeerde waarden. HAVING
werd geïntroduceerd om dit probleem aan te pakken.
Maar zelfs met HAVING
, bleef SQL relationeel onvolledig met betrekking tot Codd's totdat afgeleide tabellen waren geïntroduceerd. Afgeleide tabellen weergegeven met HAVING
overbodig maar met gebruik van HAVING
is nog steeds populair (als StackOverflow iets is om langs te gaan):mensen lijken nog steeds graag een enkele SELECT
te gebruiken waar mogelijk en de eerder genoemde rigiditeit van SQL met betrekking tot de volgorde van evaluaties (projectie wordt als laatste uitgevoerd in een SELECT
expressie) maakt het gebruik van afgeleide tabellen behoorlijk uitgebreid in vergelijking met HAVING
.