Szukaj…


Składnia

  • Funkcja (wyrażenie [ DISTINCT ]) -DISTINCT jest parametrem opcjonalnym
  • AVG (wyrażenie [ALL | DISTINCT])
  • COUNT ({[WSZYSTKO | DISTINCT] wyrażenie] | * *))
  • Grupowanie (<wyrażenie kolumny>)
  • MAX (wyrażenie [ALL | DISTINCT])
  • MIN (wyrażenie [ALL | DISTINCT])
  • SUMA (wyrażenie [ALL | DISTINCT])
  • VAR (wyrażenie [ALL | DISTINCT])
    OVER ([podział_klucza] kolejność_klucza)
  • VARP (wyrażenie [ALL | DISTINCT])
    OVER ([podział_klucza] kolejność_klucza
  • STDEV (wyrażenie [ALL | DISTINCT])
    OVER ([podział_klucza] kolejność_klucza)
  • STDEVP (wyrażenie [ALL | DISTINCT])
    OVER ([podział_klucza] kolejność_klucza)

Uwagi

W zarządzaniu bazą danych funkcja agregująca jest funkcją, w której wartości wielu wierszy są grupowane jako dane wejściowe według określonych kryteriów, aby utworzyć pojedynczą wartość o bardziej znaczącym znaczeniu lub pomiarze, taką jak zestaw, torba lub lista.

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.

Funkcje agregujące służą do obliczania „zwróconej kolumny danych liczbowych” z instrukcji SELECT . Zasadniczo podsumowują wyniki konkretnej kolumny wybranych danych. - SQLCourse2.com

Wszystkie funkcje agregujące ignorują wartości NULL.

SUMA

Sum funkcja suma wartości wszystkich wierszy w grupie. Jeśli grupa według klauzuli zostanie pominięta, sumuje wszystkie wiersze.

select sum(salary) TotalSalary
from employees;
Całkowite wynagrodzenie
2500
select DepartmentId, sum(salary) TotalSalary
from employees
group by DepartmentId;
DepartmentId Całkowite wynagrodzenie
1 2000
2) 500

Agregacja warunkowa

Tabela płatności

Klient Typ płatności Ilość
Piotr Kredyt 100
Piotr Kredyt 300
Jan Kredyt 1000
Jan Obciążyć 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

Wynik:

Klient Kredyt Obciążyć
Piotr 400 0
Jan 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

Wynik:

Klient liczba_transakcji kredytowej debit_transaction_count
Piotr 2) 0
Jan 1 1

AVG ()

Funkcja agregująca AVG () zwraca średnią danego wyrażenia, zwykle wartości liczbowe w kolumnie. Załóżmy, że mamy tabelę zawierającą roczne obliczenia liczby ludności w miastach na całym świecie. Rekordy dla Nowego Jorku wyglądają podobnie do poniższych:

PRZYKŁADOWA TABELA

Nazwa miasta populacja rok
Nowy Jork 8.550.405 2015 r
Nowy Jork ... ...
Nowy Jork 8 000 906 2005

Aby wybrać średnią populację Nowego Jorku, USA, z tabeli zawierającej nazwy miast, pomiary populacji i lata pomiaru za ostatnie dziesięć lat:

PYTANIE

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

Zauważ, że w zapytaniu nie ma roku pomiaru, ponieważ populacja jest uśredniana w czasie.

WYNIKI

Nazwa miasta śr. populacja
Nowy Jork 8 250 754

Uwaga: Funkcja AVG () konwertuje wartości na typy numeryczne. Jest to szczególnie ważne, o czym należy pamiętać podczas pracy z datami.

Łączenie list

Częściowe uznanie dla tej odpowiedzi SO.

Lista konkatenacji agreguje kolumnę lub wyrażenie, łącząc wartości w jednym ciągu dla każdej grupy. Można określić ciąg ograniczający każdą wartość (pusty lub przecinek, gdy zostanie pominięty) oraz kolejność wartości w wyniku. Chociaż nie jest to część standardu SQL, każdy główny dostawca relacyjnych baz danych obsługuje go na swój sposób.

MySQL

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

Oracle i 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;

SQL Server

SQL Server 2016 i wcześniejsze

(Włączono CTE, aby zachęcić do zasady 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 i SQL Azure

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

SQLite

bez zamówienia:

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

zamawianie wymaga podzapytania lub 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;

Liczyć

Możesz policzyć liczbę wierszy:

SELECT count(*) TotalRows
FROM employees;
TotalRows
4

Lub policz pracowników według działu:

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

Możesz policzyć na kolumnie / wyrażeniu z efektem, który nie policzy wartości NULL :

SELECT count(ManagerId) mgr
FROM EMPLOYEES;
mgr
3)

(Jest jedna kolumna managerID o wartości null)

Możesz także użyć DISTINCT wewnątrz innej funkcji, takiej jak LICZBA, aby znaleźć tylko członków DISTINCT zestawu, na których będzie wykonywana operacja.

Na przykład:

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

Zwróci różne wartości. SingleCount będzie liczyć pojedyncze kontynenty tylko raz, podczas gdy AllCount będzie zawierać duplikaty.

ContinentCode
OC
UE
TAK JAK
NA
NA
AF
AF

AllCount: 7 SingleCount: 5

Max

Znajdź maksymalną wartość kolumny:

select max(age) from employee;

Powyższy przykład zwróci największą wartość dla age kolumny tabeli employee .

Składnia:

SELECT MAX(column_name) FROM table_name;

Min

Znajdź najmniejszą wartość kolumny:

 select min(age) from employee;

Powyższy przykład zwróci najmniejszą wartość dla age kolumny tabeli employee .

Składnia:

 SELECT MIN(column_name) FROM table_name;


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow