Buscar..


Sintaxis

  • Función (expresión [ DISTINCT ]) -DISTINCT es un parámetro opcional
  • AVG ([ALL | DISTINCT] expresión)
  • COUNT ({[ALL | DISTINCT] expresión] | *})
  • AGRUPACIÓN (<column_expression>)
  • MAX (expresión [ALL | DISTINCT])
  • MIN ([ALL | DISTINCT] expresión)
  • SUM ([ALL | DISTINCT] expresión)
  • VAR ([ALL | DISTINCT] expresión)
    OVER ([partition_by_clause] order_by_clause)
  • VARP ([ALL | DISTINCT] expresión)
    OVER ([partition_by_clause] order_by_clause
  • STDEV ([ALL | DISTINCT] expresión)
    OVER ([partition_by_clause] order_by_clause)
  • STDEVP ([ALL | DISTINCT] expresión)
    OVER ([partition_by_clause] order_by_clause)

Observaciones

En la gestión de bases de datos, una función agregada es una función en la que los valores de varias filas se agrupan como entrada en ciertos criterios para formar un valor único de significado más significativo o medición, como un conjunto, una bolsa o una 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.

Las funciones agregadas se utilizan para calcular una "columna de datos numéricos devueltos" de su declaración SELECT . Básicamente, resumen los resultados de una columna particular de datos seleccionados. - SQLCourse2.com

Todas las funciones agregadas ignoran los valores NULL.

SUMA

Sum función suma del valor de todas las filas del grupo. Si se omite el grupo por cláusula, se suman todas las filas.

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

Agregación condicional

Tabla de pagos

Cliente Tipo de pago Cantidad
Peter Crédito 100
Peter Crédito 300
Juan Crédito 1000
Juan Débito 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

Resultado:

Cliente Crédito Débito
Peter 400 0
Juan 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

Resultado:

Cliente credit_transaction_count debit_transaction_count
Peter 2 0
Juan 1 1

AVG ()

La función agregada AVG () devuelve el promedio de una expresión dada, generalmente valores numéricos en una columna. Supongamos que tenemos una tabla que contiene el cálculo anual de la población en ciudades de todo el mundo. Los registros de la ciudad de Nueva York son similares a los de abajo:

Tabla de ejemplo

Nombre de la ciudad población año
Nueva York 8.550.405 2015
Nueva York ... ...
Nueva York 8,000,906 2005

Para seleccionar la población promedio de la ciudad de Nueva York, EE. UU. De una tabla que contiene nombres de ciudades, mediciones de población y años de medición de los últimos diez años:

CONSULTA

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

Observe cómo el año de medición está ausente de la consulta, ya que la población se promedia a lo largo del tiempo.

RESULTADOS

Nombre de la ciudad avg_population
Nueva York 8.250.754

Nota: La función AVG () convertirá los valores a tipos numéricos. Esto es especialmente importante tenerlo en cuenta al trabajar con fechas.

Concatenación de listas

Crédito parcial a esta respuesta.

Enumerar concatenación agrega una columna o expresión combinando los valores en una sola cadena para cada grupo. Se puede especificar una cadena para delimitar cada valor (ya sea en blanco o una coma cuando se omite) y el orden de los valores en el resultado. Si bien no es parte del estándar de SQL, todos los principales proveedores de bases de datos relacionales lo admiten a su manera.

MySQL

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

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

servidor SQL

SQL Server 2016 y anteriores

(CTE incluido para alentar el 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 y SQL Azure

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

SQLite

sin pedir:

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

el pedido requiere una subconsulta 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;

Contar

Puedes contar el número de filas:

SELECT count(*) TotalRows
FROM employees;
TotalRows
4

O contar a los empleados por departamento:

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

Puede contar sobre una columna / expresión con el efecto que no contará los valores NULL :

SELECT count(ManagerId) mgr
FROM EMPLOYEES;
monseñor
3

(Hay una columna de ID de administrador de valor nulo)

También puede utilizar DISTINCT dentro de otra función, como COUNT, para buscar solo los miembros DISTINCT del conjunto para realizar la operación.

Por ejemplo:

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

Volverá valores diferentes. SingleCount solo contará los Continentes individuales una vez, mientras que AllCount incluirá duplicados.

Código Continente
jefe
UE
COMO
N / A
N / A
AF
AF

AllCount: 7 SingleCount: 5

Max

Encuentra el valor máximo de columna:

select max(age) from employee;

El ejemplo anterior devolverá el mayor valor para la age de la columna de employee tabla de employee .

Sintaxis:

SELECT MAX(column_name) FROM table_name;

Min

Encuentra el valor más pequeño de la columna:

 select min(age) from employee;

El ejemplo anterior devolverá el valor más pequeño para la age de la columna de employee tabla de employee .

Sintaxis:

 SELECT MIN(column_name) FROM table_name;


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow