Preporučeno, 2024

Izbor Urednika

Razlika između mjesta i klauzule u SQL-u

GDJE i HAVING klauzula uglavnom se koriste u izrazu SQL upita, oni nam omogućuju da ograničimo kombinaciju u odnosu rezultata pomoću određenog predikata. Glavna razlika između WHERE i HAVING je ta da WHERE klauzula određuje uvjete za odabir tuples (redaka) iz odnosa, uključujući i uvjete pridruživanja ako je potrebno. S druge strane, klauzula HAVING određuje uvjet za odabrane skupine, a ne za pojedinačne tuple.

SQL je skraćenica od Structured Query Language ; to je sveobuhvatan ili deklarativni jezik baze podataka koji se koristi za pristup podacima iz baza podataka.

Tablica usporedbe

Osnova za usporedbuGDJEvlasništvo
Osnovni, temeljniProvodi se u nizu operacija.Implementirano u operacijama u stupcima.
Primijenjeno naJedan redakSažeti redak ili grupe.
Dohvaćanje podatakaOna dohvaća samo određene podatke iz određenih redova prema stanju.Najprije se dobivaju potpuni podaci, a zatim se razdvajaju prema uvjetima.
Skupne funkcijeNe može se pojaviti u stavci WHERE.Može se pojaviti u klauzuli HAVING.
Koristi se sSELECT i druge izjave kao što su UPDATE, DELETE ili bilo koja od njih.Ne može se koristiti bez SELECT izraza.
Glumiti kaoUnaprijed filterPost-filter
GROUP BYDolazi nakon GDJE.Dolazi nakon što ste dobili.

Definicija klauzule Gdje

Klauzula SQL WHERE koristi se za opisivanje stanja u trenutku preuzimanja podataka iz jedne tablice ili spajanja s više tablica. Ona vraća samo određenu vrijednost iz tablice ako je zadani uvjet ispunjen. WHERE se koristi za prožimanje zapisa i dohvaćanje samo potrebnih zapisa.

SQL također implementira logičke poveznice i, ili ne u WHERE klauzulu koja je također poznata kao boolean uvjet; uvjet mora biti istinit kako bi se preuzele torke. Operandi izraza logičkih poveznica uključuju operatore usporedbe kao što su <, <=, >, > =, =, i , Ovi usporedni operatori uspoređuju nizove i aritmetičke izraze. Može se koristiti u SELECT izrazu, kao iu naredbama UPDATE, DELETE .

Uzmimo primjer. Tablica prikazana u nastavku naziva se tablica " Prodaja " sastoji se od atributa " Proizvod " i "Broj prodaje ".

Za izračunavanje ukupne prodaje telefona i zvučnika potrebno je napisati sljedeći upit.

 SELECT Proizvod, zbroj (Sales_amount) AS Total_sales FROM Prodaja WHERE Proizvod u ('Telefon', 'Zvučnici') GROUP BY Proizvod; 

Sljedeći izlaz je rezultirajući izlaz gdje se prvo filtriraju redovi, telefoni i redovi zvučnika se dohvaćaju, a zatim se izvodi agregatna funkcija.

Definicija klauzule

SQL osigurava HAVING klauzulu koja se može koristiti zajedno s klauzulom GROUP BY . Ova klauzula HAVING pomaže u dohvaćanju vrijednosti za skupine koje ispunjavaju određene uvjete. WHERE klauzula također može koristiti zajedno s HAVING klauzulom tijekom odabira, WHERE klauzula filtrira pojedinačni redak. Redovi se zatim grupiraju i izvode se agregatni izračuni, a na kraju HAVING klauzula filtriraju grupe.

On se ponaša u istom kao WHERE kada se ne koristi GROUP BY ključna riječ. Grupne funkcije kao što su min, max, avg, sum i count mogu se pojaviti u samo dvije klauzule: SELECT i HAVING klauzula. On osigurava uvjet na torkama koje odgovaraju svakoj vrijednosti u skupini atributa. Jedini skup zapisa koji zadovoljava uvjet bit će prikazan kao rezultat.

Ovdje također uzimamo isti primjer kao WHERE i razmatrajući istu ' Sales ' tablicu. Kada želimo izračunati Total_sales telefona i zvučnika pomoću HAVING klauzule, napisat ćemo sljedeći upit.

 ODABERITE PROIZVOD, SUM (Sales_amount) AS Ukupne_Prodaje OD PRODAJNE GRUPE PO PROIZVODU VRIJEME Proizvod u ('telefon', 'Govornici'); 

Upit proizvodi sljedeće izlaze gdje se proizvodi prvo dohvaćaju, zatim se izvršava agregatna funkcija (sum) i na kraju se filtriraju za razliku od WHERE klauzule.

Kada želimo pronaći samo one proizvode za koje je ukupna cijena veća od 1000. Upit se može napisati kao:

 SELECT Proizvod, zbroj (Sales_amount) AS Ukupna_Prodaja OD PRODAJNE GRUPE PREMA PROIZVODOM Imajući iznos (Sales_amount)> 1000; 

Proizvedeni izlaz je:

To se ne može izvesti korištenjem WHERE klauzule unatoč HAVING-u i generira poruku o pogrešci jer se WHERE klauzula ne može koristiti s agregatnim funkcijama.

Ključne razlike između klauzula o tome gdje i kada imaju

  1. Klauzula WHERE se primjenjuje u operacijama redaka i primjenjuje se na jedan redak, dok se HAVING klauzula koristi u operacijama stupaca i može se primijeniti na sažete retke ili grupe.
  2. U klauzuli WHERE željeni se podaci preuzimaju prema primijenjenom stanju. Nasuprot tome, HAVING klauzula dohvaća cijele podatke, a razdvajanje se vrši prema stanju.
  3. Agregatne funkcije kao što su min, sum, max, avg ne mogu se pojaviti zajedno s WHERE klauzulom. Nasuprot tome, te se funkcije mogu pojaviti u HAVING klauzuli.
  4. HAVING klauzula se ne može koristiti bez SELECT izraza. Nasuprot tome, WHERE se može koristiti sa SELECT, UPDATE, DELETE, itd.
  5. WHERE klauzula se ponaša kao predfilter, dok HAVING klauzula djeluje kao post-filter.
  6. WHERE, ako se koristi s GROUP BY, dolazi prije GROUP BY. To znači da WHERE filtrira redove prije izvođenja agregatnih izračuna. S druge strane, HAVING dolazi nakon GROUP BY, što znači da se filtriraju nakon što se izvode agregatni izračuni.

Zaključak

WHERE i HAVING klauzula djeluje na isti način, osim dodatne značajke za koju je HAVING klauzula popularna. Klauzula HAVING može učinkovito raditi s agregatnim funkcijama dok WHERE ne može raditi s agregatnim funkcijama.

Top