Sök…


Syntax

  • Funktion ([ DISTINCT ] -uttryck) -DISTINCT är en valfri parameter
  • AVG ([ALL | DISTINCT] uttryck)
  • COUNT ({[ALL | DISTINCT] expression] | *})
  • Gruppering (<column_expression>)
  • MAX ([ALL | DISTINCT] uttryck)
  • MIN ([ALL | DISTINCT] uttryck)
  • SUM ([ALL | DISTINCT] uttryck)
  • VAR ([ALL | DISTINCT] uttryck)
    OVER ([partition_by_clause] order_by_clause)
  • VARP ([ALL | DISTINCT] uttryck)
    OVER ([partition_by_clause] order_by_clause
  • STDEV ([ALL | DISTINCT] uttryck)
    OVER ([partition_by_clause] order_by_clause)
  • STDEVP ([ALL | DISTINCT] uttryck)
    OVER ([partition_by_clause] order_by_clause)

Anmärkningar

I databashantering är en sammanlagd funktion en funktion där värdena för flera rader grupperas tillsammans som inmatning på vissa kriterier för att bilda ett enda värde av mer betydande betydelse eller mätning som en uppsättning, en påse eller en 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.

Samlade funktioner används för att beräkna mot en "returnerad kolumn med numerisk data" från ditt SELECT uttalande. De sammanfattar i princip resultaten från en viss kolumn med utvalda data. - SQLCourse2.com

Alla aggregerade funktioner ignorerar NULL-värden.

SUMMA

Sum summerar värdet på alla rader i gruppen. Om gruppen enligt klausul utelämnas summerar alla raderna.

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

Villkorlig aggregering

Betalningstabell

Kund Betalnings typ Belopp
Peter Kreditera 100
Peter Kreditera 300
John Kreditera 1000
John Debitera 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

Resultat:

Kund Kreditera Debitera
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

Resultat:

Kund credit_transaction_count debit_transaction_count
Peter 2 0
John 1 1

AVG ()

Den samlade funktionen AVG () returnerar medelvärdet för ett givet uttryck, vanligtvis numeriska värden i en kolumn. Antag att vi har en tabell som innehåller den årliga befolkningsberäkningen i städer över hela världen. Posterna för New York City ser ut som de nedan:

EXEMPELBORD

Stadens namn befolkning år
New York City 8.550.405 2015
New York City ... ...
New York City 8.000.906 2005

För att välja den genomsnittliga befolkningen i New York City, USA från en tabell som innehåller stadnamn, befolkningsmätningar och mätår under de senaste tio åren:

FRÅGA

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

Lägg märke till hur mätåret saknas från frågan eftersom befolkningen beräknas i genomsnitt över tiden.

RESULTAT

Stadens namn avg_population
New York City 8.250.754

Obs: funktionen AVG () konverterar värden till numeriska typer. Detta är särskilt viktigt att komma ihåg när du arbetar med datum.

Lista sammankoppling

Partiell kredit till detta SO-svar.

Lista sammanlänkning samlar en kolumn eller ett uttryck genom att kombinera värdena i en enda sträng för varje grupp. En sträng för att avgränsa varje värde (antingen tomt eller komma när det utelämnas) och ordningen på värdena i resultatet kan anges. Även om det inte ingår i SQL-standarden, stöder varje större relationsdatabasleverantör den på sitt eget sätt.

MySQL

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

Oracle & 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 och tidigare

(CTE ingår för att uppmuntra DRY-principen )

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

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

SQLite

utan att beställa:

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

beställning kräver en subfråga eller 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;

Räkna

Du kan räkna antalet rader:

SELECT count(*) TotalRows
FROM employees;
TotalRows
4

Eller räkna medarbetarna per avdelning:

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

Du kan räkna över en kolumn / uttryck med effekten som inte räknar NULL värdena:

SELECT count(ManagerId) mgr
FROM EMPLOYEES;
mgr
3

(Det finns en kolumn med nollvärdehanteraren)

Du kan också använda DISTINCT inuti en annan funktion, t.ex. COUNT, för att bara hitta DISTINCT- medlemmarna i uppsättningen för att utföra operationen på.

Till exempel:

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

Returnerar olika värden. SingleCount räknar endast enskilda kontinenter en gång, medan AllCount kommer att innehålla duplikat.

ContinentCode
OC
EU
SOM
NA
NA
AF
AF

AllCount: 7 SingleCount: 5

Max

Hitta kolumnens maximala värde:

select max(age) from employee;

Ovanstående exempel kommer att återvända största värdet för kolumn age av employee bord.

Syntax:

SELECT MAX(column_name) FROM table_name;

min

Hitta det minsta värdet på kolumnen:

 select min(age) from employee;

Ovanstående exempel kommer att återvända minsta värdet för kolumn age av employee bord.

Syntax:

 SELECT MIN(column_name) FROM table_name;


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow