Istruzione SELECT avanzata combinata con funzioni di aggregazione dei dati
- 24-07-2022
- Toanngo92
- 0 Comments
Mục lục
Funzioni di aggregazione dei dati
A volte, gli sviluppatori possono anche chiedere di eseguire analisi sulle righe, come il conteggio delle righe, il rispetto di criteri specifici o il riepilogo delle vendite per tutti gli ordini. La funzione di aggregazione consente di farlo.
Poiché le funzioni aggregate restituiscono un singolo valore, possono essere utilizzate negli stati SELECT in cui viene utilizzata un'espressione, come le clausole SELECT, HAVING e ORDER BY. Le funzioni aggregate ignorano NULLS, tranne quando si utilizza COUNT(*).
Le funzioni aggregate nell'elenco SELECT non avranno nomi di colonna, potrebbe essere utile utilizzare la clausola AS per impostare i nomi di colonna.
La funzione di aggregazione è una clausola SELECT che opera su tutte le righe passate alla fase SELECT. Senza la clausola GROUP BY, tutte le righe verranno riepilogate.
Alcune funzioni aggregate:
Nome della funzione | Sintassi _ | Descrivere |
AVG | MEDIA(<espressione>) | Calcola la media di tutti i valori non NULL nella colonna |
COUNT o COUNT_BIG | COUNT(*) o COUNT(<espressione>) | Quando viene utilizzato (*), questa funzione conta tutte le righe, comprese quelle con NULL. La funzione conta tutte le righe, comprese quelle con NULL. La funzione restituisce il numero di righe non NULL per la colonna quando una colonna è specificata come . Il valore di ritorno della funzione COUNT è un int. Il valore restituito di COUNT_BIG è big_int |
MASSIMO | MAX(<espressione>) | Restituisce il numero più grande, la data/ora più recente o la stringa che si è verificata più di recente. |
MIN | MIN(<espressione>) | Restituisce il numero più piccolo, la data o l'ora più lontana o la stringa che compare per prima |
RIEPILOGO | SOMMA(<espressione>) | Somma tutti i valori non NULL nella colonna.. |
Per esempio:
SELECT AVG([UnitPrice]) AS AvgUnitPrice, MIN([OrderQty]) AS MinQty, MAX([UnitPriceDiscount]) AS MaxDiscount FROM Sales.SalesOrderDetail;
Quando si utilizza l'aggregazione nella clausola SELECT, tutte le colonne distinte nell'elenco SELECT devono essere utilizzate come input per una funzione di aggregazione o devono essere referenziate nella clausola GROUP BY. Se fallisce, si verificherà un errore.
Esempio di query che restituirà un errore:
SELECT SalesOrderID,AVG(UnitPrice) AS AvgPrice FROM Sales.SalesOrderDetail;
Errore restituito:
Column 'Sales.SalesOrderDetail.SalesOrderID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Per risolvere questo problema, rimuovi semplicemente la colonna SalesOrderID nell'istruzione SELECT.
Oltre a utilizzare funzioni di aggregazione con dati numerici, può essere utilizzato con dati di data, ora, caratteri.
Esempio utilizzando MIN e CODE per ottenere la data dell'ordine più vicina e più lontana
SELECT MIN(OrderDate) AS Earliest, MAX(OrderDate) AS Lastest FROM Sales.SalesOrderHeader
Sintesi spaziale
SQL Server fornisce diversi metodi per aggregare due singoli elementi di dati geometrici o geografici.
Metodo | Descrivere |
STUnion | Restituisce un oggetto che rappresenta l'unione di una geometria/elemento geografico con un'altra geometria/elemento geografico. |
STIntersezione | Restituisce un oggetto che rappresenta l'intersezione di una geometria/elemento geografico e un'altra geometria/elemento geografico |
STConvexHull | Restituisce un oggetto che rappresenta la parte convessa di un elemento geometrico/geografico. Un insieme di punti si dice convesso se per due punti qualsiasi l'intero segmento è contenuto in quell'insieme. Lo scafo convesso di un insieme di punti è il più piccolo insieme convesso contenente l'insieme. Per ogni dato insieme di punti, esiste un solo guscio convesso. |
Per esempio:
SELECT geometry::Point(251,1,4326).STUnion(geometry::Point(252,2,4236));
Esempio 2:
DECLARE @City1 geography SET @City1=geography::STPolyFromText('POLYGON((175.3 -41.5,183.3 -37.9,172.8 -34.6,175.3 -41.5))',4326) DECLARE @City2 geography SET @City2=geography::STPolyFromText('POLYGON((169.3 -46.6,174.3 -41.6,172.5 -40.7,166.3 -45.8,169.3 -46.6))',4326) DECLARE @CombinedCity geography=@City1.STUnion(@city2) SELECT @CombinedCity
Alcune funzioni di aggregazione spaziale
Aggregato dell'Unione
Esegue l'operazione di unione su un insieme di oggetti geometrici. Combina più oggetti spaziali in un unico oggetto spaziale, rimuovendo i confini interni, se presenti.
Per esempio:
SELECT Geography::UnionAggregate (SpatialLocation) AS AVGLocation FROM Person.Address WHERE City='London';
Aggregato busta
Per esempio:
SELECT Geography::EnvelopeAggregate(SpatialLocation) AS Location FROM Person.Address WHERE City='London'
Aggregato di scafo convesso
Per esempio:
SELECT Geography::ConvexHullAggregate(SpatialLocation) AS Location FROM Person.Address WHERE City='Lodon'