Perhatikan bahwa Anda ingin mendapatkan jumlah gaji, di Tutorial D :
SUMMARIZE emp BY { job } ADD ( SUM ( sal ) AS total_sal )
Agregasi not bukanlah operator relasional, oleh karena itu tidak akan menjadi bagian dari aljabar relasional.
Adapun HAVING
, apakah itu anomali sejarah. Sebelum Standar SQL-92, tidak mungkin menulis SELECT
ekspresi dalam FROM
klausa (alias tabel turunan) yaitu Anda harus melakukan semua pekerjaan dalam satu SELECT
ekspresi. Karena urutan evaluasi SQL yang kaku, nilai agregat tidak muncul setelah WHERE
klausa telah dievaluasi yaitu tidak mungkin menerapkan pembatasan berdasarkan nilai agregat. HAVING
diperkenalkan untuk mengatasi masalah ini.
Tetapi bahkan dengan HAVING
, SQL tetap tidak lengkap secara relasional sehubungan dengan Codd sampai tabel turunan diperkenalkan. Tabel turunan dirender HAVING
berlebihan tetapi menggunakan HAVING
masih populer (jika Stackoverflow adalah segalanya):folk sepertinya masih suka menggunakan SELECT
tunggal jika memungkinkan dan kekakuan SQL yang disebutkan di atas sehubungan dengan urutan evaluasi (proyeksi dilakukan terakhir dalam SELECT
ekspresi) membuat penggunaan tabel turunan cukup bertele-tele jika dibandingkan dengan HAVING
.