Ricerca…


Sintassi

  • Funzione (espressione [ DISTINCT ]) -DISTINCT è un parametro facoltativo
  • AVG ([ALL | DISTINCT] espressione)
  • COUNT ({[ALL | DISTINCT] espressione] | *})
  • RAGGRUPPAMENTO (<espressione_colonna>)
  • MAX (espressione [ALL | DISTINCT])
  • MIN (espressione [ALL | DISTINCT])
  • SUM (espressione [ALL | DISTINCT])
  • VAR (espressione [ALL | DISTINCT])
    OVER ([partition_by_clause] order_by_clause)
  • VARP ([ALL | DISTINCT] espressione)
    OVER ([partition_by_clause] order_by_clause
  • STDEV ([ALL | DISTINCT] espressione)
    OVER ([partition_by_clause] order_by_clause)
  • STDEVP ([ALL | DISTINCT] espressione)
    OVER ([partition_by_clause] order_by_clause)

Osservazioni

Nella gestione del database una funzione aggregata è una funzione in cui i valori di più righe sono raggruppati come input su determinati criteri per formare un singolo valore di significato o misura più significativo come un set, una borsa o un elenco.

MIN        returns the smallest value in a given column
MAX        returns the largest value in a given column
SUM        returns the sum of the numeric values in a given column
AVG        returns the average value of a given column
COUNT      returns the total number of values in a given column
COUNT(*)   returns the number of rows in a table
GROUPING   Is a column or an expression that contains a column in a GROUP BY clause.
STDEV      returns the statistical standard deviation of all values in the specified expression.
STDEVP     returns the statistical standard deviation for the population for all values in the specified expression.
VAR        returns the statistical variance of all values in the specified expression. may be followed by the OVER clause.
VARP       returns the statistical variance for the population for all values in the specified expression.

Le funzioni aggregate vengono utilizzate per calcolare una "colonna restituita di dati numerici" SELECT . In pratica riassumono i risultati di una particolare colonna di dati selezionati. - SQLCourse2.com

Tutte le funzioni aggregate ignorano i valori NULL.

SOMMA

Sum funzione sommare il valore di tutti i righe nel gruppo. Se la clausola group by viene omessa, somma tutte le righe.

select sum(salary) TotalSalary
from employees;
TotalSalary
2500
select DepartmentId, sum(salary) TotalSalary
from employees
group by DepartmentId;
DepartmentID TotalSalary
1 2000
2 500

Aggregazione condizionale

Tabella dei pagamenti

Cliente Modalità di pagamento Quantità
Peter Credito 100
Peter Credito 300
John Credito 1000
John Addebito 500
select customer, 
       sum(case when payment_type = 'credit' then amount else 0 end) as credit,
       sum(case when payment_type = 'debit' then amount else 0 end) as debit
from payments
group by customer

Risultato:

Cliente Credito Addebito
Peter 400 0
John 1000 500
select customer, 
       sum(case when payment_type = 'credit' then 1 else 0 end) as credit_transaction_count,
       sum(case when payment_type = 'debit' then 1 else 0 end) as debit_transaction_count
from payments
group by customer

Risultato:

Cliente credit_transaction_count debit_transaction_count
Peter 2 0
John 1 1

AVG ()

La funzione di aggregazione AVG () restituisce la media di una determinata espressione, in genere valori numerici in una colonna. Supponiamo di avere una tabella contenente il calcolo annuale della popolazione nelle città di tutto il mondo. I record di New York City sono simili a quelli seguenti:

TABELLA ESEMPIO

nome della città popolazione anno
New York City 8.550.405 2015
New York City ... ...
New York City 8.000.906 2005

Per selezionare la popolazione media della città di New York, Stati Uniti, da una tabella contenente nomi di città, misure di popolazione e anni di misurazione per gli ultimi dieci anni:

QUERY

select city_name, AVG(population) avg_population
from city_population
where city_name = 'NEW YORK CITY';

Si noti come l'anno di misura è assente dalla query poiché la popolazione viene mediata nel tempo.

RISULTATI

nome della città avg_population
New York City 8.250.754

Nota: la funzione AVG () convertirà i valori in tipi numerici. Questo è particolarmente importante da ricordare quando si lavora con le date.

Elenco di concatenazione

Credito parziale a questa risposta SO.

List Concatenazione aggrega una colonna o un'espressione combinando i valori in una singola stringa per ciascun gruppo. Una stringa per delimitare ogni valore (vuoto o una virgola quando omesso) e l'ordine dei valori nel risultato può essere specificato. Sebbene non faccia parte dello standard SQL, tutti i principali fornitori di database relazionali lo supportano a modo loro.

MySQL

SELECT ColumnA
     , GROUP_CONCAT(ColumnB ORDER BY ColumnB SEPARATOR ',') AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

Oracle e DB2

SELECT ColumnA
     , LISTAGG(ColumnB, ',') WITHIN GROUP (ORDER BY ColumnB) AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

PostgreSQL

SELECT ColumnA
     , STRING_AGG(ColumnB, ',' ORDER BY ColumnB) AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

server SQL

SQL Server 2016 e versioni precedenti

(CTE inclusa per incoraggiare il principio DRY )

  WITH CTE_TableName AS (
       SELECT ColumnA, ColumnB
         FROM TableName)
SELECT t0.ColumnA
     , STUFF((
       SELECT ',' + t1.ColumnB
         FROM CTE_TableName t1
        WHERE t1.ColumnA = t0.ColumnA
        ORDER BY t1.ColumnB
          FOR XML PATH('')), 1, 1, '') AS ColumnBs
  FROM CTE_TableName t0
 GROUP BY t0.ColumnA
 ORDER BY ColumnA;

SQL Server 2017 e SQL Azure

SELECT ColumnA
     , STRING_AGG(ColumnB, ',') WITHIN GROUP (ORDER BY ColumnB) AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

SQLite

senza ordinare:

SELECT ColumnA
     , GROUP_CONCAT(ColumnB, ',') AS ColumnBs
  FROM TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

l'ordine richiede una subquery o CTE:

  WITH CTE_TableName AS (
       SELECT ColumnA, ColumnB
         FROM TableName
        ORDER BY ColumnA, ColumnB)
SELECT ColumnA
     , GROUP_CONCAT(ColumnB, ',') AS ColumnBs
  FROM CTE_TableName
 GROUP BY ColumnA
 ORDER BY ColumnA;

Contare

Puoi contare il numero di righe:

SELECT count(*) TotalRows
FROM employees;
TotalRows
4

O contare i dipendenti per dipartimento:

SELECT DepartmentId, count(*) NumEmployees
FROM employees
GROUP BY DepartmentId;
DepartmentID NumEmployees
1 3
2 1

Puoi contare su una colonna / espressione con l'effetto che non conteggia i valori NULL :

SELECT count(ManagerId) mgr
FROM EMPLOYEES;
mgr
3

(C'è una colonna ID gestore valori null)

Puoi anche utilizzare DISTINCT all'interno di un'altra funzione come COUNT per trovare solo i membri DISTINCT del set su cui eseguire l'operazione.

Per esempio:

 SELECT COUNT(ContinentCode) AllCount
 ,      COUNT(DISTINCT ContinentCode) SingleCount
 FROM Countries;

Restituirà valori diversi. Il SingleCount conterà solo una volta i singoli Continenti, mentre l' AllCount includerà duplicati.

ContinentCode
OC
Unione Europea
COME
N / A
N / A
AF
AF

AllCount: 7 SingleCount: 5

Max

Trova il valore massimo della colonna:

select max(age) from employee;

L'esempio sopra restituirà il valore più grande per l' age della colonna della tabella dei employee .

Sintassi:

SELECT MAX(column_name) FROM table_name;

min

Trova il valore più basso della colonna:

 select min(age) from employee;

L'esempio sopra restituirà il valore più piccolo per l' age della colonna della tabella dei employee .

Sintassi:

 SELECT MIN(column_name) FROM table_name;


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow