sql >> Databáze >  >> RDS >> Mysql

Ekvivalent klauzule GroupBy a Having v relační algebře

V výukovém programu D chcete získat součet platu :

SUMMARIZE emp BY { job } ADD ( SUM ( sal ) AS total_sal )

Agregace poznámek není relační operátor, proto nebude tvořit součást relační algebry.

Pokud jde o HAVING , je to historická anomálie. Před standardem SQL-92 nebylo možné napsat SELECT výrazy v FROM klauzule (a.k.a odvozené tabulky), tj. museli jste udělat veškerou práci v jednom SELECT výraz. Kvůli rigidnímu pořadí hodnocení SQL nevznikne agregovaná hodnota za WHERE klauzule byla vyhodnocena, tj. nebylo možné použít omezení na základě agregovaných hodnot. HAVING byl představen k řešení tohoto problému.

Ale i s HAVING SQL zůstávalo relativně neúplné, pokud jde o Codd's, dokud nebyly zavedeny odvozené tabulky. Odvozené tabulky vykresleny HAVING redundantní, ale pomocí HAVING je stále populární (pokud je Stackoverflow něco, čím by se dalo jít):zdá se, že lidé stále rádi používají jeden SELECT kde je to možné a výše zmíněná rigidita SQL, pokud jde o pořadí hodnocení (projekce se provádí jako poslední v SELECT výraz) činí použití odvozené tabulky ve srovnání s HAVING poměrně podrobným .



  1. Jak mohu získat úplný seznam všech dotazů aktuálně spuštěných na mém serveru MySQL?

  2. spustit php přes mysql?

  3. Je v pořádku používat beta verzi Sphinx ve výrobě?

  4. PHP SQL:Jak ukládat data do více databází z jednoho html formuláře NEBO jak automaticky kopírovat data z jedné databáze do jiné databáze