Come utilizzare la clausola MySQL HAVING in cui la somma è maggiore della soglia

Come Utilizzare La Clausola Mysql Having In Cui La Somma E Maggiore Della Soglia



Quando lavori con il database MySQL, avrai spesso casi in cui desideri filtrare i valori. Sebbene sia possibile utilizzare la clausola WHERE, non sempre funziona per tutte le istanze. La clausola HAVING viene utilizzata quando si desidera eseguire una query di filtro utilizzando una funzione di aggregazione e applicare i raggruppamenti.

La clausola HAVING si basa sulla clausola GROUP BY nel suo filtro ed esegue la query in base alla condizione fornita. Limita il filtro in base alla condizione e restituisce i gruppi selezionati solo se soddisfano la condizione. Abbiamo esempi di utilizzo della clausola MySQL HAVING in cui la somma supera la soglia. In questo modo, imparerai come usarlo alla fine del post di oggi.







Come utilizzare la clausola MySQL HAVING in cui la somma è maggiore della soglia

Si applica la clausola MySQL HAVING con la clausola GROUP BY. La sua sintassi è la seguente:



SELECT expression1, .. expression_n, aggregate_func (expression) FROM table_name GROUP BY expression HAVING ;

È possibile utilizzare le diverse funzioni di aggregazione tra cui SUM(), COUNT(), MIN(), MAX() e AVG(). Si noti che qualsiasi espressione non utilizzata con la funzione di aggregazione deve essere menzionata con la clausola GROUP BY.



Per quanto riguarda la condizione, viene applicata ai risultati aggregati in cui si specifica la soglia che si desidera verificare con la condizione. Ad esempio, puoi applicare la funzione SUM() e verificare se l'espressione soddisfa una soglia di 10. Ne capiremo di più negli esempi forniti.





Per capire come funziona la clausola HAVING, creiamo un database di esempio con cui lavoreremo. Chiamiamo il nostro database come 'registro'.



Creiamo anche una tabella denominata 'lavoratori' per contenere le nostre diverse colonne e tipi di dati. Qui lavoriamo con i dati dei lavoratori come il nome, l'orario, la data di lavoro, ecc.

Controllando la descrizione della nostra tabella, possiamo confermare che tutte le colonne sono state create correttamente.

Inseriamo i valori nella nostra tabella. Abbiamo diversi lavoratori che lavorano in orari e giorni diversi. Usando questi dati, possiamo applicare la clausola HAVING dove la somma supera la soglia.

Per il nostro primo esempio, consideriamo un caso in cui vogliamo trovare i lavoratori che hanno lavorato più ore. Per la clausola HAVING, includi la funzione di aggregazione della somma per le ore. Nella clausola GROUP BY, raggruppiamo le righe utilizzando la riga del nome per aiutare a classificare i lavoratori con ore totali superiori alla soglia.

Se abbiamo la nostra soglia per le ore totali come 7, eseguiamo il nostro comando come segue:

SELEZIONA nome, SOMMA(ore) AS totale_ore_per_persona FROM lavoratori GROUP BY nome HAVING somma(ore) > 7;

Eseguendo il comando, otteniamo un output che contiene due righe poiché solo due worker hanno superato la soglia specificata nella clausola HAVING.

Supponiamo di voler classificare i reparti per vedere quelli con lavoratori che lavorano in orari superiori ad una soglia di 7 ore. Selezioniamo il reparto, quindi utilizziamo la funzione aggregata SUM con le ore e raggruppiamo le righe utilizzando l'espressione reparto.

Il nostro comando è il seguente:

SELECT dipartimento, SUM(ore) AS total_hours_per_department FROM lavoratori GROUP BY dipartimento HAVING sum(ore) > 7;

Dai risultati, possiamo verificare che siamo riusciti a filtrare le righe per lasciare solo quelle con una somma delle loro ore superiore alla nostra soglia.

Allo stesso modo, se vogliamo filtrare la data di lavoro con il maggior numero di lavoratori al lavoro per superare una soglia di 10 ore, selezioniamo l'espressione data di lavoro. Quindi, usiamo la funzione SOMMA con le ore e raggruppiamo le righe utilizzando la data di lavoro.

Il comando è il seguente:

SELECT data di lavoro, SOMMA(ore) AS ore_più_alte_lavorate FROM lavoratori GROUP BY data di lavoro HAVING somma(ore) > 10;

Dopo aver eseguito il comando, i risultati mostrano che solo una data di lavoro ha la sua somma di ore totali che superano la soglia:

Conclusione

La clausola MySQL HAVING viene utilizzata quando si desidera eseguire una query di filtro utilizzando una funzione di aggregazione. Viene combinato con la clausola GROUP BY per eseguire una query più specifica. Questo post ha dettagliato tutto sulla clausola MySQL HAVING in cui la somma è maggiore della soglia. Con gli esempi forniti, ora capisci come lavorare con la clausola MySQL HAVING.