Guarda il video
Così come la clausola “Dove” ti consente di selezionare (o rifiutare) record individuali; La clausola “Avere” ti consente di selezionare (o rifiutare) un gruppo di record.
Se vogliamo sapere quanti libri raggruppati da editoriale usiamo le seguenti istruzioni già apprese:
select editorial, count(*) from libros group by editorial;
Se vogliamo sapere quanti libri raggruppati da editoriali ma considerando solo alcuni gruppi, ad esempio quelli che restituiscono un valore maggiore di 2, utilizziamo le seguenti istruzioni:
select editorial, count(*) from libros group by editorial having count(*)>2;
“Avere” è utilizzato, seguito dalla condizione di ricerca, per selezionare determinate righe restituite dalla clausola “Gruppo per”.
Let’s Vedi altri esempi. Vogliamo i prezzi medi raggruppati per editoriale, ma solo quei gruppi la cui media supera i 25 pesos:
select editorial, avg(precio) from libros group by editorial having avg(precio)>25;
In alcuni casi è possibile confondere le claushe “dove “E” avere “. Vogliamo contare i registri raggruppati per editoriale senza tenere conto dell’editore “Planeta”.
Analizzare le seguenti frasi:
select editorial, count(*) from libros where editorial'Planeta' group by editorial; select editorial, count(*) from libros group by editorial having editorial'Planeta';
Entrambi restituiscono lo stesso risultato, ma sono diversi. Il primo, seleziona tutti i record rifiutando il “Planet” editoriale e poi li raggruppano per contare loro. Il secondo, seleziona tutti i record, li raggruppano per contare e finalmente rifiutano la riga con l’account corrispondente alla casa editrice “Planet”.
Non dovremmo confondere la clausola “dove” con la clausola “Avere” ; Il primo stabilisce le condizioni per la selezione dei record di una “selezione”; La seconda imposta le condizioni per la selezione dei record di un “Gruppo per” output.
Vediamo altri esempi combinando “dove” e “avendo”. Vogliamo il numero di libri, senza considerare il prezzo nullo, raggruppato per editoriale, senza considerare l’editore “Planet”:
select editorial, count(*) from libros where precio is not null group by editorial having editorial'Planeta';
Qui, selezionare il record di rifiuto Coloro che non rispettano la condizione riportata in “dove”, quindi raggrupparli con “editoriale” e finalmente respinge i gruppi che non sono conformi alla condizione indicata nel “Havir”.
La clausola è Usato “Avere” con funzioni di gruppo, questo non può fare la clausola “dove” “. Ad esempio, vogliamo i prezzi medi raggruppati per editoriale, di quei editoriali che hanno più di 2 libri:
In una clausola “Avere” ci possono essere diversi termini. Quando si utilizzano diverse condizioni, devi combinarli con operatori logici (e, o, non).
Possiamo trovare il valore più alto dei libri raggruppati e ordinati per editoriale e selezionare le righe che hanno un valore Meno di 100 e superiore a 30:
select editorial, max(precio) as mayor from libros group by editorial having min(precio)30 order by editorial;
Quindi, utilizziamo la “con” clouse “per limitare le righe che restituiscono un” Gruppo per “output. Va sempre dopo la clausola “Gruppo per” e prima del “ordine per” clausola se ha.