32 – Selezionare Gruppi (avendo)

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *