Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Odpowiednik klauzuli GroupBy i having w algebrze relacyjnej

Zauważ, że chcesz otrzymać sumę wynagrodzenia, w Samouczku D :

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

Agregacja notatek nie jest operatorem relacyjnym, dlatego nie będzie częścią algebry relacyjnej.

Co do HAVING , czy jest to anomalia historyczna. Przed standardem SQL-92 nie można było napisać SELECT wyrażenia w FROM klauzula (tzw. tabele pochodne) tj. musiałeś wykonać całą pracę w jednym SELECT wyrażenie. Ze względu na sztywną kolejność oceny SQL, wartość zagregowana nie występuje po WHERE klauzula została oceniona, tj. nie można zastosować ograniczenia na podstawie wartości zagregowanych. HAVING został wprowadzony w celu rozwiązania tego problemu.

Ale nawet z HAVING , SQL pozostawał relacyjnie niekompletny w odniesieniu do Codda do czasu wprowadzenia tabel pochodnych. Tabele pochodne renderowane HAVING nadmiarowe, ale używające HAVING jest nadal popularny (jeśli Stackoverflow jest czymś, przez co można przejść):ludzie nadal lubią używać jednego SELECT tam gdzie to możliwe i wyżej wspomnianą sztywność SQL w odniesieniu do kolejności ocen (projekcja jest wykonywana jako ostatnia w SELECT wyrażenie) sprawia, że ​​użycie tabeli pochodnej jest dość szczegółowe w porównaniu z HAVING .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ImportError:Brak modułu o nazwie „MySQL”

  2. BŁĄD 1349 (HY000):SELECT widoku zawiera podzapytanie w klauzuli FROM

  3. Jak mogę policzyć posty, które mają zerowy lub pozytywny wynik głosów?

  4. Przewodnik po projektowaniu bazy danych dla RBAC w MySQL

  5. Kod błędu:1305. FUNKCJA lub PROCEDURA nie istnieje