32 – Selectați Grupuri (având)

vizionați Video

, precum și clauza „Unde” vă permite să selectați (sau respinge) înregistrează individul; Clauza „având” vă permite să selectați (sau să respingeți) un grup de înregistrări.

Dacă vrem să știm câte cărți grupate de editorial folosim următoarea instrucțiune deja învățată:

 select editorial, count(*) from libros group by editorial;

Dacă vrem să știm câte cărți grupate după editorial, dar considerând doar câteva grupuri, de exemplu, cei care returnează o valoare mai mare de 2, folosim următoarea instrucțiune:

 select editorial, count(*) from libros group by editorial having count(*)>2;

„Având” este folosit, urmat de condiția de căutare, pentru a selecta anumite rânduri returnate de clauza „Grupul”.

haideți Vedeți alte exemple. Dorim prețurile medii grupate după editorial, dar numai acele grupuri a căror medie depășește 25 pesos:

 select editorial, avg(precio) from libros group by editorial having avg(precio)>25;

În unele cazuri este posibil să confundați clauzele „unde „Și” având „. Dorim să numărăm jurnalele grupate de editorial fără a lua în considerare editorul „Planeta”.

Analiza următoarelor fraze:

 select editorial, count(*) from libros where editorial'Planeta' group by editorial; select editorial, count(*) from libros group by editorial having editorial'Planeta';

Ambele returnează același rezultat, dar sunt diferite. Primul, selectați toate înregistrările prin respingerea „planetei” editorială și apoi le grupați pentru a le număra. Al doilea, selectează toate înregistrările, le grupează să le numere și să respingă rândul cu contul care corespunde editurii „Planeta”.

Nu ar trebui să confundăm clauza „Unde” cu clauza „Având” ; Primul stabilește condițiile pentru selectarea înregistrărilor unui „selecție”; Al doilea stabilește condiții pentru selectarea înregistrărilor unui „grup de” ieșire.

Să vedem alte exemple prin combinarea „unde” și „având”. Dorim numărul de cărți, fără a lua în considerare prețul null, grupat de editorial, fără a lua în considerare editorul „Planeta”:

 select editorial, count(*) from libros where precio is not null group by editorial having editorial'Planeta';

aici, selectați înregistrările de respingere Cei care nu respectă condiția dată în „Unde”, apoi grupați-le de „editorial” și, în cele din urmă, respinge grupurile care nu respectă condiția dată în „Havir”.

clauza este Folosit „având” cu funcții de grup, acest lucru nu poate face clauza „unde”. De exemplu, dorim prețurile medii grupate de editorial, ale acelor editoriale care au mai mult de 2 cărți:

 select editorial, avg(precio) from libros group by editorial having count(*) > 2; 

într-o clauză „având” pot exista mai multe termeni. Când utilizați mai multe condiții, trebuie să le combinați cu operatorii logici (și, sau, nu).

Putem găsi valoarea mai mare a cărților grupate și sortate după editorial și selectați rândurile care au o valoare Mai puțin de 100 și mai mare de 30:

 select editorial, max(precio) as mayor from libros group by editorial having min(precio)30 order by editorial; 

astfel încât să folosim „având” clopot pentru a restricționa rândurile care returnează o ieșire „grup de”. Se duce întotdeauna după clauza „Grupul de către” și înainte de clauza „Ordine prin” dacă are.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *