Cosè il sé in Python: esempi del mondo reale
Cos'è il sé in Python: esempi del mondo reale
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
Cos'è il sé in Python: esempi del mondo reale
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.
Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.
In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.
Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.
Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.
Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.
Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.
Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere