Suche…


Syntax

  • Funktion ([ DISTINCT ] Ausdruck) -DISTINCT ist ein optionaler Parameter
  • AVG (Ausdruck [ALL | DISTINCT])
  • COUNT ({[ALL | DISTINCT] Ausdruck] | *})
  • GROUPING (<column_expression>)
  • MAX (Ausdruck [ALL | DISTINCT])
  • MIN (Ausdruck [ALL | DISTINCT])
  • SUM (Ausdruck [ALL | DISTINCT])
  • VAR (Ausdruck [ALL | DISTINCT])
    OVER ([partition_by_clause] order_by_clause)
  • VARP ([ALL | DISTINCT] Ausdruck)
    OVER ([partition_by_clause] order_by_clause
  • STDEV (Ausdruck [ALL | DISTINCT])
    OVER ([partition_by_clause] order_by_clause)
  • STDEVP (Ausdruck [ALL | DISTINCT])
    OVER ([partition_by_clause] order_by_clause)

Bemerkungen

In der Datenbankverwaltung ist eine Aggregatfunktion eine Funktion, bei der die Werte mehrerer Zeilen als Eingabe für bestimmte Kriterien gruppiert werden, um einen einzelnen Wert von größerer Bedeutung oder Messung zu bilden, beispielsweise eine Menge, ein Beutel oder eine Liste.

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.

Aggregatfunktionen werden zur Berechnung einer "zurückgegebenen Spalte numerischer Daten" aus Ihrer SELECT Anweisung verwendet. Sie fassen im Wesentlichen die Ergebnisse einer bestimmten Spalte ausgewählter Daten zusammen. - SQLCourse2.com

Alle Aggregatfunktionen ignorieren NULL-Werte.

SUMME

Sum - Funktion den Wert aller Zeilen in der Gruppe zusammenzufassen. Wenn die group-by-Klausel weggelassen wird, summiert sie alle Zeilen.

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

Bedingte Aggregation

Zahlungstabelle

Kunde Zahlungsart Menge
Peter Kredit 100
Peter Kredit 300
John Kredit 1000
John Lastschrift 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

Ergebnis:

Kunde Kredit Lastschrift
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

Ergebnis:

Kunde credit_transaction_count debit_transaction_count
Peter 2 0
John 1 1

AVG ()

Die Aggregatfunktion AVG () gibt den Durchschnitt eines bestimmten Ausdrucks zurück, normalerweise numerische Werte in einer Spalte. Angenommen, wir haben eine Tabelle mit der jährlichen Bevölkerungsberechnung in Städten auf der ganzen Welt. Die Aufzeichnungen für New York City sehen ähnlich wie die folgenden aus:

BEISPIELTABELLE

Stadtname Population Jahr
New York City 8.550.405 2015
New York City ... ...
New York City 8.000.906 2005

So wählen Sie die durchschnittliche Einwohnerzahl von New York City (USA) aus einer Tabelle aus, die Ortsnamen, Bevölkerungsmessungen und Messjahre der letzten zehn Jahre enthält:

ABFRAGE

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

Beachten Sie, dass das Messjahr in der Abfrage nicht vorhanden ist, da die Bevölkerung im Zeitverlauf gemittelt wird.

ERGEBNISSE

Stadtname avg_population
New York City 8.250.754

Hinweis: Die Funktion AVG () konvertiert Werte in numerische Typen. Dies ist besonders wichtig, wenn Sie mit Daten arbeiten.

List Verkettung

Teilweise Verdienst dieser SO-Antwort.

Mit List Concatenation wird eine Spalte oder ein Ausdruck zusammengefasst, indem die Werte für jede Gruppe in einer einzelnen Zeichenfolge zusammengefasst werden. Ein String zur Begrenzung jedes Werts (entweder leer oder ein Komma, wenn nicht angegeben) und die Reihenfolge der Werte im Ergebnis kann angegeben werden. Obwohl es nicht Teil des SQL-Standards ist, unterstützt es jeder große Anbieter von relationalen Datenbanken auf seine eigene Weise.

MySQL

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

Oracle und 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 und früher

(CTE eingeschlossen, um das DRY-Prinzip zu fördern)

  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 und SQL Azure

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

SQLite

ohne zu bestellen:

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

Bestellung erfordert eine Unterabfrage oder 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;

Anzahl

Sie können die Anzahl der Zeilen zählen:

SELECT count(*) TotalRows
FROM employees;
Gesamtreihen
4

Oder zählen Sie die Mitarbeiter pro Abteilung:

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

Sie können über eine Spalte / einen Ausdruck mit dem Effekt zählen, der die NULL Werte nicht zählt:

SELECT count(ManagerId) mgr
FROM EMPLOYEES;
mgr
3

(Es gibt eine Nullwertmanager-Spalte)

Sie können DISTINCT auch innerhalb einer anderen Funktion wie COUNT verwenden, um nur die DISTINCT- Mitglieder des Sets zu finden, auf denen die Operation ausgeführt wird.

Zum Beispiel:

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

Gibt verschiedene Werte zurück. Der SingleCount zählt nur einmal Kontinente, während der AllCount Duplikate enthält.

ContinentCode
OC
EU
WIE
N / A
N / A
AF
AF

AllCount: 7 SingleCount: 5

Max

Ermitteln Sie den maximalen Wert der Spalte:

select max(age) from employee;

Im obigen Beispiel wird größten Wert für Spalte zurückgeben age der employee Tabelle.

Syntax:

SELECT MAX(column_name) FROM table_name;

Mindest

Finde den kleinsten Wert der Spalte:

 select min(age) from employee;

Im obigen Beispiel wird kleinsten Wert für Spalte zurückgeben age der employee Tabelle.

Syntax:

 SELECT MIN(column_name) FROM table_name;


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow