Power Automate si applica a ogni azione nei flussi di lavoro
Scopri l
In questo tutorial, discuteremo alcuni modi in cui possiamo utilizzare o eseguire la clausola HAVING nelle funzioni di aggregazione SQL . L'utilizzo di questa clausola nelle funzioni di aggregazione SQL può essere di grande aiuto nel riepilogo dei dati.
La clausola HAVING è quasi simile all'istruzione WHERE e può anche essere eseguita insieme ad essa.
Discuteremo le loro correlazioni e differenze fornendo esempi durante questo tutorial.
Sommario
GROUP BY E WHERE Dichiarazioni In SQL
Per il nostro primo esempio, discuteremo come eseguire la clausola WHERE e GROUP BY utilizzando la tabella di esempio riportata di seguito. Tieni presente che possiamo utilizzare la clausola WHERE solo con le colonne esistenti e non solo nelle funzioni di aggregazione.
Supponiamo di voler ottenere le vendite totali di un prodotto in base alla colonna SaleAmount in cui il valore è maggiore di 2 . Per ottenere il risultato, il nostro comando dovrebbe essere il seguente:
Innanzitutto, selezioniamo ProductName e aggreghiamo SaleAmount per ottenere TotalSales .
Quindi, abbiamo utilizzato l' istruzione WHERE qui poiché stiamo cercando di ottenere solo i prodotti in cui SaleAmount è maggiore di 2. Il comando "GROUP BY ProductName" indica che raggrupperà le righe sotto la colonna ProductName in una sola.
Eseguendo il nostro set di comandi, vedremo che tra tutti i dati nelle colonne ProductName e SaleAmount , sono stati visualizzati solo Bulb e Fan . Questo perché erano gli unici ad avere un SaleAmount maggiore di 2.
In questo esempio, l' istruzione WHERE serve per filtrare i risultati con una colonna esistente, che è il nostro SaleAmount . Si noti inoltre che l' istruzione WHERE viene visualizzata prima di GROUP BY e non può essere utilizzata per filtrare le funzioni di aggregazione. D'altra parte, la clausola HAVING appare dopo GROUP BY e viene utilizzata per filtrare in base a una funzione aggregata.
GROUP BY e clausola HAVING in SQL
In questo esempio, dimostreremo la differenza tra l' istruzione WHERE e la clausola HAVING . Useremo lo stesso obiettivo che abbiamo nell'esempio precedente in modo da poter confrontare e valutare i risultati.
Per prima cosa mostriamo i prodotti con le loro vendite totali utilizzando il comando seguente. Come puoi vedere, il nostro primo comando è sempre lo stesso del nostro primo comando che esegue l' istruzione WHERE .
Se dobbiamo eseguire i nostri primi due comandi, avremo il seguente risultato:
Ora, supponiamo di voler visualizzare solo i prodotti la cui vendita totale è superiore a 5. Non possiamo utilizzare l' istruzione WHERE poiché può essere utilizzata solo con le colonne esistenti. Pertanto, dobbiamo utilizzare la clausola HAVING poiché filtreremo da una funzione aggregata.
Si noti come usiamo la clausola HAVING dopo GROUP BY a differenza dell'istruzione WHERE utilizzata prima di GROUP BY. Questo perché l'SQL raggrupperà i record prima di valutare la clausola HAVING .
Eseguiamo quindi questi comandi insieme a HAVING SUM(SaleAmount)>5 . Dopo aver specificato che vogliamo ottenere solo quei prodotti il cui prezzo totale è maggiore di 5, noteremo che nella nostra attuale tabella dei risultati non vedremo più la Penna . Questo perché il suo totale è inferiore a 5 .
In breve, quando vogliamo filtrare i dati dalla nostra tabella in base a una colonna esistente, utilizziamo la clausola WHERE , mentre quando vogliamo filtrare i dati da una funzione aggregata, utilizziamo la clausola HAVING .
Clausola HAVING e WHERE in SQL Server Management Studio (SSMS)
Ora, andremo avanti discutendo e dimostrando come possiamo eseguire la clausola HAVING in SQL Server Management Studio (SSMS). Affronteremo anche la differenza tra la clausola HAVING e la clausola WHERE fornendo esempi.
Di seguito sono mostrati i nostri dati di esempio SalesOrderHeader. Questi dati sono costituiti da 100 righe. Per il nostro esempio, vogliamo ottenere TotalSale da CustomerID dove TotalSale è maggiore di 10000 . Si noti che la vendita totale è basata sulla somma dei valori della colonna TotalDue .
Innanzitutto, lasciatemi dimostrare perché non possiamo usare la clausola WHERE quando vogliamo filtrare una funzione aggregata basata sul nostro esempio sopra.
Useremo il set di comandi di esempio dall'immagine qui sotto. Come puoi vedere, tecnicamente abbiamo lo stesso set di comandi di quello che abbiamo dal nostro primo esempio.
Tuttavia, quando clicchiamo su Execute nell'angolo in alto a sinistra, si verificherà un errore perché non possiamo utilizzare la clausola WHERE da sola quando filtriamo sulla funzione di aggregazione.
Per correggere l'errore, dobbiamo filtrare il risultato utilizzando la clausola HAVING invece della clausola WHERE . Il nostro nuovo set di comandi dovrebbe essere simile all'immagine qui sotto.
Ora possiamo vedere che il nostro errore è stato corretto e contiene i risultati per CustomerID con un TotalSale maggiore di 10000 .
Di nuovo, la clausola WHERE viene sempre utilizzata prima della clausola GROUP BY , mentre la clausola HAVING viene sempre utilizzata dopo una clausola GROUP BY .
Utilizzo sia della clausola HAVING che della clausola WHERE in SQL
Per questo esempio, supponiamo di voler utilizzare contemporaneamente la clausola WHERE e HAVING . Proviamo a ottenere TotalSale da CustomerID dove TotalSale è maggiore di 10000 ma solo con i clienti in cui il loro TerritoryID è uguale a 1 .
Poiché vogliamo filtrare i risultati con i clienti che hanno 1 come TerritoryID , utilizzeremo la clausola WHERE. Quindi il nostro comando dovrebbe essere lo stesso del precedente. Ancora una volta, abbiamo aggiunto una clausola WHERE prima della clausola GROUP BY.
Per ora, non possiamo vedere molta differenza tra il nostro risultato precedente e questo nuovo. Tuttavia, se guardi da vicino nell'angolo in basso a destra, ora abbiamo solo 64 righe rispetto al precedente con 505 righe di dati. Questo perché i risultati vengono filtrati anche in base al loro TerritoryID .
Conclusione
Per riassumere, possiamo utilizzare la clausola WHERE solo con colonne esistenti. Se dobbiamo filtrare con funzioni aggregate, dobbiamo invece utilizzare la clausola HAVING .
L'utilizzo della clausola HAVING nelle funzioni di aggregazione SQL e la pratica dei modi per eseguire insieme la clausola HAVING e la clausola WHERE possono fornire agli utenti comodità quando lavorano su un numero elevato di dati o record.
Spero di averti fornito informazioni e comprensione sufficienti su come utilizzare la clausola HAVING nelle funzioni di aggregazione SQL. Se desideri saperne di più su questo argomento e altri contenuti correlati, puoi sicuramente consultare l'elenco dei link pertinenti di seguito.
Ti auguro il meglio,
Hafiz
Scopri l
Tecniche di modellazione dei dati per organizzare meglio le misure DAX per un flusso di lavoro più efficiente.
Scopri come utilizzare la funzione di filtro in Power Apps e come incorporarla nelle formule esistenti all
Come commentare più righe in Python: una guida semplice e veloce
Acquisisci familiarità con i connettori Power Automate per la manipolazione di numeri, testo e date/ore.
Ora, è molto facile studiare il budget rispetto all
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo articolo tratta anche come importare oggetti da R a LuckyTemplates.
Scopri tutto su Power Query e il linguaggio M per la trasformazione e la preparazione dei dati nel desktop di LuckyTemplates.
Cos'è il sé in Python: esempi del mondo reale
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.