Contactos

Cuente el número de registros en grupos (creados por GROUP BY). Cálculos en sql Calcular el número de id con un valor específico

Describe el uso de operadores aritméticos y la construcción de columnas calculadas. Se consideran las funciones de resumen (agregadas) COUNT, SUM, AVG, MAX, MIN. Se proporciona un ejemplo del uso de la cláusula GROUP BY para agrupar en consultas de selección de datos. Describe el uso de la cláusula HAVING.

Construyendo campos calculados

En general, para crear campo calculado (derivado) alguna expresión debe especificarse en la lista SELECT Lenguaje SQL... Estas expresiones utilizan funciones aritméticas de suma, resta, multiplicación y división y funciones SQL integradas. Puede especificar el nombre de cualquier columna (campo) de una tabla o consulta, pero use solo el nombre de columna de esa tabla o consulta que se enumera en la cláusula FROM de la declaración correspondiente. Al crear expresiones complejas, es posible que se necesiten paréntesis.

Los estándares SQL le permiten especificar explícitamente los nombres de las columnas de la tabla de resultados utilizando la cláusula AS.

SELECCIONE Product.Name, Product.Price, Deal.Quantity, Product.Price * Deal.Quantity AS Cost FROM Product INNER JOIN Deal ON Product.Product Code = Deal.Product Code Ejemplo 6.1. Calcular el costo total de cada transacción.

Ejemplo 6.2. Obtenga una lista de empresas con los nombres y las iniciales de los clientes.

SELECCIONE Empresa, Apellido + "" + Izquierda (Nombre, 1) + "." + Izquierda (Patronímico, 1) + "." COMO Nombre completo DEL Cliente Ejemplo 6.2. Obtención de listado de empresas con indicación de apellidos e iniciales de clientes.

La consulta utiliza la función incorporada Izquierda, que le permite cortar un carácter de la izquierda en una variable de texto en este caso.

Ejemplo 6.3. Obtenga una lista de productos con el año y el mes de venta.

SELECCIONE Item.Name, Year (Deal.Date) AS Año, Mes (Deal.Date) AS Month FROM Item INNER JOIN Deal ON Item.Product Code = Deal.Product Code Ejemplo 6.3. Recibiendo un listado de productos indicando el año y mes de venta.

La consulta utiliza las funciones integradas Año y Mes para extraer el año y el mes de una fecha.

Usar funciones de resumen

Mediante el uso funciones de resumen (agregadas) dentro del marco de la consulta SQL, puede obtener una serie de información estadística resumida sobre el conjunto de valores seleccionados del conjunto de salida.

Los siguientes principales están disponibles para el usuario. funciones de resumen:

  • Recuento (expresión): determina el número de registros en el conjunto de salida de la consulta SQL;
  • Mín. / Máx. (Expresión): determina el menor y el mayor del conjunto de valores en un determinado campo de la solicitud;
  • Promedio (expresión): esta función le permite calcular el promedio de un conjunto de valores almacenados en un campo específico de registros seleccionados por la consulta. Es la media aritmética, es decir la suma de los valores dividida por su número.
  • Suma (expresión): calcula la suma del conjunto de valores contenidos en un campo específico de los registros seleccionados por la consulta.

Los nombres de columna se utilizan con mayor frecuencia como expresiones. La expresión también se puede calcular utilizando los valores de varias tablas.

Todas estas funciones operan con valores en una sola columna de una tabla o con una expresión aritmética y devuelven un solo valor. Las funciones COUNT, MIN y MAX se aplican a campos numéricos y no numéricos, mientras que las funciones SUM y AVG solo se pueden usar en el caso de campos numéricos, con la excepción de COUNT (*). Al calcular los resultados de cualquier función, primero se excluyen todos los valores vacíos, después de lo cual la operación requerida se aplica solo a los valores de columna específicos restantes. La variante COUNT (*) es un caso especial de uso de la función COUNT, su propósito es contar todas las filas en la tabla resultante, independientemente de si contiene valores vacíos, duplicados o cualquier otro valor.

Si es necesario eliminar los valores duplicados antes de usar la función genérica, debe preceder el nombre de la columna en la definición de la función con palabra clave DISTINTO. No tiene sentido para las funciones MIN y MAX, sin embargo, su uso puede afectar los resultados de la ejecución. Funciones SUM y AVG, por lo que debe considerar de antemano si debe estar presente en cada caso. Además, la palabra clave DISTINCT se puede especificar como máximo una vez en cualquier consulta.

Es muy importante tener en cuenta que funciones de resumen solo se puede usar en la lista SELECT cláusulas y como parte de la cláusula HAVING. En todos los demás casos, esto es inaceptable. Si la lista de la cláusula SELECT contiene funciones de resumen, y el texto de la consulta no contiene la cláusula GROUP BY, que asegura la combinación de datos en grupos, entonces ninguno de los elementos de la lista de la cláusula SELECT puede incluir referencias a campos, excepto en la situación en la que los campos actúan como argumentos funciones de resumen.

Ejemplo 6.4. Determine el primer nombre alfabético del producto.

SELECCIONE Min (Nombre del artículo) AS Min_Name FROM Item Ejemplo 6.4. Determinación del primer nombre alfabético del producto.

Ejemplo 6.5. Determina el número de transacciones.

SELECCIONAR Recuento (*) AS Número_ de operaciones DE Comercio Ejemplo 6.5. Determina el número de transacciones.

Ejemplo 6.6. Determina la cantidad total de bienes vendidos.

SELECCIONE Sum (Deal.Quantity) AS Item_Quantity FROM Deal Ejemplo 6.6. Determinación de la cantidad total de bienes vendidos.

Ejemplo 6.7. Determine el precio promedio de los bienes vendidos.

SELECCIONE Avg (Item.Price) AS Avg_Price FROM Item INNER JOIN Deal ON Item.Product Code = Deal.Product Code; Ejemplo 6.7. Determinación del precio medio de los bienes vendidos.

SELECCIONE Suma (Artículo.Precio * Oferta.Cantidad) COMO Costo DESDE el artículo INNER JOIN Oferta en Artículo.Código de producto = Oferta.Código de producto Ejemplo 6.8. Calcular el costo total de los bienes vendidos.

Cláusula GROUP BY

Las consultas a menudo requieren subtotales, que generalmente se indican mediante la aparición de la frase "para cada ..." en la consulta. La cláusula GROUP BY se usa en la instrucción SELECT para este propósito. Una consulta que contiene un GROUP BY se denomina consulta de agrupación porque agrupa los datos de una operación SELECT y luego crea una única fila de resumen para cada grupo individual. El estándar SQL requiere que la cláusula SELECT y la cláusula GROUP BY estén estrechamente relacionadas. Con una cláusula GROUP BY en una instrucción SELECT, cada elemento de la lista en la cláusula SELECT debe tener un valor único para todo el grupo. Además, la cláusula SELECT solo puede incluir los siguientes tipos de elementos: nombres de campo, funciones de resumen, constantes y expresiones que incluyen combinaciones de los anteriores.

Todos los nombres de campo enumerados en la cláusula SELECT deben aparecer en la cláusula GROUP BY, a menos que el nombre de la columna se use en función final... Lo contrario no es cierto: la cláusula GROUP BY puede contener nombres de columna que no se enumeran en la cláusula SELECT.

Si se usa una cláusula WHERE con GROUP BY, primero se procesa y solo se agrupan las filas que satisfacen la condición de búsqueda.

El estándar SQL especifica que cuando se realiza la agrupación, todos los valores faltantes se tratan como iguales. Si dos filas de la tabla en la misma columna de agrupación contienen valores NULL e idénticos en todas las demás columnas agrupadas no vacías, se colocan en el mismo grupo.

Ejemplo 6.9. Calcule el volumen medio de compras realizadas por cada cliente.

SELECCIONE Client.Surname, Avg (Deal.Quantity) AS Average_amount FROM Client INNER JOIN Deal ON Client.Client Code = Deal.Client Code GROUP BY Client.Surname Ejemplo 6.9. Calcular el volumen medio de compras realizadas por cada cliente.

La frase "por cada cliente" se refleja en la consulta SQL como una oración GRUPO POR Cliente. Apellido.

Ejemplo 6.10. Determina a cuánto se vendió cada artículo.

SELECCIONE Item.Name, Sum (Item.Price * Deal.Quantity) AS Cost FROM Item INNER JOIN Deal ON Item.Product Code = Deal.Product Code GROUP BY Item.Name Ejemplo 6.10. Determinación de cuánto se vendió el producto de cada artículo.

SELECT Client.Firm, Count (Deal.Trade Code) AS Número_ de operaciones FROM Client INNER JOIN Deal ON Client.Client Code = Deal.Client Code GROUP BY Client.Firm Ejemplo 6.11. Contando el número de transacciones realizadas por cada firma.

SELECCIONE Client.Firm, Sum (Deal.Quantity) AS Total_Quantity, Sum (Product.Price * Deal.Quantity) AS Cost FROM Product INNER JOIN (Client INNER JOIN Deal ON Client.Client Code = Deal.Client Code) ON Product.Product Código = Oferta. Código de producto GRUPO POR Cliente.Firma Ejemplo 6.12. Cálculo de la cantidad total de bienes adquiridos para cada empresa y su valor.

Ejemplo 6.13. Determine el costo total de cada producto para cada mes.

SELECCIONE Item.Name, Month (Deal.Date) AS Month, Sum (Item.Price * Deal.Quantity) AS Cost FROM Item INNER JOIN Deal ON Item.Product Code = Deal.Product Code GROUP BY Item.Name, Month (Deal .Fecha) Ejemplo 6.13. Determinación del costo total de cada producto para cada mes.

Ejemplo 6.14. Determine el costo total de cada producto de primer grado para cada mes.

SELECCIONE Item.Name, Month (Deal.Date) AS Month, Sum (Item.Price * Deal.Quantity) AS Cost FROM Item INNER JOIN Deal ON Item.Product Code = Deal.Product Code WHERE Item.Variety = "First" GROUP POR artículo .Nombre, mes (fecha de la oferta) Ejemplo 6.14. Determinación del costo total de cada producto de primer grado para cada mes.

TENIENDO cláusula

HAVING refleja todos los bloques de datos previamente agrupados por GROUP BY que satisfacen las condiciones especificadas en HAVING. eso oportunidad adicional"filtrar" el conjunto de salida.

Las condiciones en HAVING son diferentes de las condiciones en DONDE:

  • HABIENDO excluye los grupos con resultados de valores agregados del conjunto de datos de resultados;
  • DONDE excluye del cálculo de valores agregados agrupando registros que no cumplen la condición;
  • las funciones agregadas no se pueden especificar en la cláusula de búsqueda WHERE.

Ejemplo 6.15. Identifique empresas con más de tres transacciones en total.

SELECCIONE Cliente.Firma, Recuento (Número de trato) AS Número_ de operaciones DESDE el Cliente INNER JOIN Acuerdo en Cliente.Código de cliente = Código de trato.Cliente GRUPO POR Cliente.Firma QUE TIENE Recuento (Número de trato)> 3 Ejemplo 6.15. Identificación de empresas con más de tres transacciones en total.

Ejemplo 6.16. Muestre una lista de productos vendidos por más de RUB 10,000.

SELECCIONE Product.Name, Sum (Product.Price * Deal.Quantity) AS Cost FROM Product INNER JOIN Deal ON Product.Product Code = Deal.Product Code GROUP BY Product.Name HAVING Sum (Product.Price * Deal.Quantity)> 10000 Ejemplo 6.16. Mostrando una lista de productos vendidos por más de 10,000 rublos.

Ejemplo 6.17. Muestre una lista de productos vendidos por más de 10,000 sin especificar la cantidad.

SELECCIONE Item.Name FROM Item INNER JOIN Deal ON Item.Product Code = Deal.Product Code GROUP BY Item.Name HAVING Sum (Item.Price * Deal.Quantity)> 10000 Ejemplo 6.17. Muestra una lista de productos vendidos por más de 10,000 sin especificar la cantidad.

A partir de la versión 4.0, MySQL DBMS tiene una capacidad bastante conveniente para contar el número de todos los registros adecuados para una consulta, cuando el número de registros está limitado por LIMIT. Cuando se trabaja con la búsqueda en la base de datos, así como cuando se selecciona de tablas con gran cantidad registros, dicha funcionalidad es simplemente necesaria.

Sintaxis. En la consulta SELECT, la opción SQL_CALC_FOUND_ROWS debe especificarse antes de la lista de columnas. Aquí está el comienzo de la sintaxis de la cláusula SELECT.

SELECCIONE




select_expr, ... ...

Por lo tanto, al hacer SELECCIONAR consulta SQL_CALC_FOUND_ROWS El DBMS contará el número total de filas que coinciden con la condición de la consulta y almacenará este número en la memoria. Naturalmente, la consulta SELECT SQL_CALC_FOUND_ROWS solo tiene sentido cuando se usa la restricción (LIMIT). Inmediatamente después de ejecutar una consulta de selección para obtener el número de registros, debe ejecutar otra consulta SELECT: SELECT FOUND_ROWS ();. Como resultado, MySQL devolverá una fila con un campo, que almacenará el número de filas.

Un ejemplo de las propias solicitudes:

> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name DONDE número> 100 LÍMITE 10;
> SELECCIONAR FOUND_ROWS ();

La primera consulta devolverá (imprimirá) 10 filas de la tabla tbl_name para la cual el número de condición> 100 es verdadero. La segunda llamada al comando SELECT devolverá el número de filas que el primer comando SELECT habría devuelto si se hubiera escrito sin una cláusula LIMIT. Aunque el uso del comando SELECT SQL_CALC_FOUND_ROWS requiere que MySQL recalcule todas las filas en el conjunto de resultados, este método es aún más rápido que sin LIMIT, ya que no necesita enviar el resultado al cliente.

Solicitudes de muestra de PHP:

$ resultado = mysql_query ("SELECCIONAR SQL_CALC_FOUND_ROWS * FROM table1 LIMIT 0, 10", $ enlace);
while ($ fila = mysql_fetch_assoc ($ resultado))
{
var_dump ($ fila);
}

$ resultado = mysql_query ("SELECCIONAR FOUND_ROWS ()", $ enlace);
$ num_rows = mysql_result ($ resultado, 0);
echo "$ num_rows Filas \ n";

Como resultado de ejecutar el código, siempre que $ link apunte a una conexión abierta al DBMS, PHP generará 10 filas de table1, y luego un valor entero para el número de filas que coinciden con la consulta (excluyendo LIMIT).

En consultas con UNION, SQL_CALC_FOUND_ROWS puede comportarse de dos formas debido a que LIMIT puede aparecer en varios lugares. Las filas se pueden contar para consultas SELECT individuales o para toda la consulta después de la concatenación.

El propósito de SQL_CALC_FOUND_ROWS para UNION es que debe devolver el número de filas que se devolverán sin un LIMIT global. Las condiciones para usar SQL_CALC_FOUND_ROWS con UNION se enumeran a continuación:

  • La palabra clave SQL_CALC_FOUND_ROWS debe especificarse en la primera instrucción SELECT.
  • FOUND_ROWS () solo será preciso si se usa UNION ALL. Si se especifica UNION sin ALL, se produce la eliminación de duplicados y FOUND_ROWS () solo es aproximado.
  • Si UNION no contiene LIMIT, entonces se ignora SQL_CALC_FOUND_ROWS y se devuelve el número de filas en la tabla temporal que se crea para ejecutar UNION.

Para determinar el número de registros en Tabla MySQL, necesitas usar funcion especial CONTAR ().

La función COUNT () devuelve el número de registros de una tabla que coinciden con un criterio determinado.

La función COUNT (expr) siempre cuenta solo aquellas filas donde expr se evalúa como NOT NULL.

Una excepción a esta regla es el uso de la función COUNT () con un asterisco como argumento - COUNT (*). En este caso, se consideran todas las filas, independientemente de si son NULL o NOT NULL.

Por ejemplo, la función COUNT (*) devuelve el número total de registros en una tabla:

SELECT COUNT (*) FROM table_name

Cómo contar el número de entradas y mostrar

Un ejemplo de código PHP + MySQL para contar y mostrar el número total de filas:

$ res = mysql_query ("SELECT COUNT (*) FROM table_name") $ row = mysql_fetch_row ($ res); $ total = $ fila; // registros totales echo $ total; ?>

Este ejemplo ilustra el uso más simple de la función COUNT (). Pero con esta función, también puede realizar otras tareas.

Indicando columna específica tablas como parámetro, la función COUNT (column_name) devuelve el número de registros en esta columna que no contienen NULL. Las entradas NULL se ignoran.

SELECT COUNT (column_name) FROM table_name

No se puede utilizar la función mysql_num_rows (), porque para conocer el número total de registros, es necesario ejecutar la consulta SELECT * FROM db, es decir, obtener todos los registros, lo cual no es deseable, por lo tanto, es preferible use la función de conteo.

$ resultado = mysql_query ("SELECT COUNT (*) as rec FROM db");

Usando la función COUNT () por ejemplo

Aquí hay otro ejemplo del uso de la función COUNT (). Supongamos que tiene una mesa ice_cream con un catálogo de helados que contiene ID de categoría y nombres de helados.

SQL - Lección 8. Agrupar registros y la función COUNT ()

Recordemos qué mensajes y en qué temas tenemos. Para hacer esto, puede utilizar la consulta habitual:

Pero, ¿qué pasa si solo necesitamos averiguar cuántas publicaciones hay en el foro? Para hacer esto, puede usar la función incorporada CONTAR ()... Esta función cuenta el número de filas. Además, si * actúa como argumento para esta función, se cuentan todas las filas de la tabla. Y si se especifica un nombre de columna como argumento, solo se cuentan las filas que tienen un valor en la columna especificada.

En nuestro ejemplo, ambos argumentos darán el mismo resultado, ya que todas las columnas de la tabla NO son NULAS. Escribamos una consulta usando la columna id_topic como argumento:

SELECCIONAR COUNT (id_topic) DESDE publicaciones;

Entonces, hay 4 publicaciones en nuestros hilos. Pero, ¿qué pasa si queremos saber cuántas publicaciones hay en cada tema? Para hacer esto, necesitamos agrupar nuestros mensajes por tema y calcular la cantidad de mensajes para cada grupo. Para agrupar en SQL, use el operador AGRUPAR POR... Nuestra solicitud ahora se verá así:

SELECT id_topic, COUNT (id_topic) FROM posts GROUP BY id_topic;

Operador AGRUPAR POR indica al DBMS que agrupe los datos por la columna id_topic (es decir, cada tema es un grupo separado) y que cada grupo cuente el número de filas:

Bueno, en el tema con id = 1 tenemos 3 mensajes, y con id = 4 - uno. Por cierto, si no hubiera valores en el campo id_topic, dichas filas se combinarían en un grupo separado con un valor NULL.

Supongamos que solo estamos interesados ​​en grupos con más de dos mensajes. En una consulta normal, especificaríamos una condición usando el operador DÓNDE, pero este operador solo puede trabajar con cadenas, y para los grupos, el operador realiza las mismas funciones TENIENDO:

SELECCIONE id_topic, COUNT (id_topic) FROM posts GROUP BY id_topic TENIENDO COUNT (id_topic)> 2;

Como resultado, tenemos:

En la lección 4, consideramos qué condiciones puede establecer el operador DÓNDE, el operador puede establecer las mismas condiciones TENIENDO, solo necesitas recordar eso DÓNDE filtra las filas, y TENIENDO- grupos.

Así que hoy aprendimos cómo crear grupos y cómo contar el número de filas en una tabla y en grupos. Generalmente, junto con el operador AGRUPAR POR puede utilizar otras funciones integradas, pero las estudiaremos más adelante.

Aprenderemos a resumir. No, estos no son los resultados de aprender SQL todavía, sino los resultados de los valores de las columnas de las tablas de la base de datos. Agregar Funciones SQL actuar sobre los valores de las columnas para obtener un único valor resultante. Las funciones agregadas de SQL más utilizadas son SUM, MIN, MAX, AVG y COUNT. Es necesario distinguir entre dos casos de uso de funciones agregadas. Primero, las funciones agregadas se utilizan por sí mismas y devuelven un único valor resultante. En segundo lugar, las funciones agregadas se utilizan con la cláusula GROUP BY de SQL, es decir, con la agrupación por campos (columnas) para obtener los valores de resultado en cada grupo. Consideremos primero los casos de uso de funciones agregadas sin agrupar.

Función SUMA SQL

La función SQL SUM devuelve la suma de los valores de una columna en una tabla de base de datos. Solo se puede aplicar a columnas cuyos valores sean números. Consultas SQL para obtener la cantidad resultante, comience así:

SELECCIONAR SUMA (COLUMN_NAME) ...

Esta expresión va seguida de FROM (TABLE_NAME), y luego se puede especificar una condición usando la cláusula WHERE. Además, DISTINCT se puede especificar delante del nombre de la columna, lo que significa que solo se contarán los valores únicos. De forma predeterminada, se tienen en cuenta todos los valores (para esto, puede especificar específicamente no DISTINCT, sino ALL, pero la palabra ALL es opcional).

Ejemplo 1. Existe una base de datos de la empresa con datos de sus divisiones y empleados. La tabla Staff, además de todo, tiene una columna con datos sobre los sueldos de los empleados. La selección de la tabla es la siguiente (para ampliar la imagen, haga clic en ella con el botón izquierdo del mouse):

Para obtener la suma de todos los salarios, utilizamos la siguiente consulta:

SELECCIONE SUM (salario) DEL personal

Esta consulta devolverá 287664.63.

Y ahora . En los ejercicios ya empezamos a complicar las tareas, acercándolas a las que se encuentran en la práctica.

Función SQL MIN

La función SQL MIN también funciona en columnas cuyos valores son números y devuelve el mínimo de todos los valores de la columna. Esta función tiene la misma sintaxis que la función SUM.

Ejemplo 3. La base de datos y la tabla son las mismas que en el ejemplo 1.

Quieres saber el mínimo salarios empleados del departamento número 42. Para ello, escriba la siguiente solicitud:

La solicitud devolverá el valor 10505,90.

Y otra vez ejercicio para decisión independiente ... En este y algunos otros ejercicios, necesitará no solo la tabla de personal, sino también la tabla de organización, que contiene datos sobre las divisiones de la empresa:


Ejemplo 4. La tabla Org se agrega a la tabla Staff, que contiene datos sobre las divisiones de la empresa. Muestra el número mínimo de años que un empleado ha trabajado en un departamento ubicado en Boston.

Función SQL MAX

La función SQL MAX funciona de manera similar y tiene una sintaxis similar, que se usa cuando necesita determinar el valor máximo entre todos los valores en una columna.

Ejemplo 5.

Se requiere conocer el salario máximo de los empleados del departamento con el número 42. Para ello, escriba la siguiente solicitud:

La solicitud devolverá el valor 18352.80

El tiempo ha llegado ejercicios de auto-solución.

Ejemplo 6. Estamos trabajando de nuevo con dos tablas: Staff y Org. Muestra el nombre del departamento y la cantidad máxima de comisiones ganadas por un empleado en un departamento que pertenece a la División Este. Usar JOIN (unir tablas) .

Función SQL AVG

La sintaxis anterior para las funciones descritas anteriormente también es válida para la función SQL AVG. Esta función devuelve el promedio de todos los valores en una columna.

Ejemplo 7. La base de datos y la tabla son las mismas que en los ejemplos anteriores.

Suponga que desea conocer la experiencia laboral promedio de los empleados del departamento número 42. Para ello, escriba la siguiente consulta:

El resultado será un valor de 6,33

Ejemplo 8. Trabajamos con una mesa - Staff. Retirar el salario medio de los empleados con una experiencia de 4 a 6 años.

Función SQL COUNT

La función SQL COUNT devuelve el número de registros en una tabla de base de datos. Si especifica SELECT COUNT (COLUMN_NAME) ... en la consulta, el resultado será el número de registros excluyendo aquellos registros en los que el valor de la columna es NULL (indefinido). Si usa un asterisco como argumento e inicia una consulta SELECT COUNT (*) ..., el resultado será el número de todos los registros (filas) en la tabla.

Ejemplo 9. La base de datos y la tabla son las mismas que en los ejemplos anteriores.

Quiere saber el número de todos los empleados que reciben comisiones. El número de empleados cuyos valores de columna Comm no son NULL devolverá la siguiente consulta:

SELECT COUNT (Comm) FROM Staff

El resultado es 11.

Ejemplo 10. La base de datos y la tabla son las mismas que en los ejemplos anteriores.

Si necesita averiguar el número total de registros en una tabla, usamos una consulta con un asterisco como argumento para la función COUNT:

SELECCIONAR COUNT (*) DE Staff

El resultado es 17.

En el proximo ejercicio de autoayuda necesitará utilizar una subconsulta.

Ejemplo 11. Trabajamos con una mesa - Staff. Visualice el número de empleados en el departamento de planificación (Plains).

Funciones agregadas con SQL GROUP BY (agrupación)

Ahora veamos el uso de funciones agregadas junto con la cláusula GROUP BY de SQL. La cláusula SQL GROUP BY se utiliza para agrupar los valores de resultado por las columnas de la tabla de la base de datos. El sitio tiene una lección dedicada a este operador por separado .

Ejemplo 12. Hay una base de datos del portal de anuncios. Contiene la tabla Anuncios, que contiene datos sobre los anuncios enviados durante la semana. La columna Categoría contiene datos sobre categorías grandes de anuncios (por ejemplo, bienes raíces) y la columna Partes contiene datos sobre las partes más pequeñas incluidas en la categoría (por ejemplo, las partes de apartamentos y villas son partes de la categoría bienes raíces). La columna Unidades contiene datos sobre la cantidad de anuncios enviados y la columna Dinero contiene la cantidad de dinero recibido por enviar anuncios.

CategoríaParteUnidadesDinero
TransporteVehículos de motor110 17600
Bienes raícesApartamentos89 18690
Bienes raícesCabañas57 11970
TransporteMotocicletas131 20960
Materiales de construcciónTablones68 7140
Ingenieria EléctricaSets de televisión127 8255
Ingenieria EléctricaRefrigeradores137 8905
Materiales de construcciónRegips112 11760
OcioLibros96 6240
Bienes raícesCasas47 9870
OcioMúsica117 7605
OcioJuegos41 2665

Utilizando Declaración SQL AGRUPAR POR, encuentre la cantidad de dinero ganado al enviar anuncios en cada categoría. Escribimos la siguiente solicitud:

SELECCIONE Categoría, SUMA (Dinero) COMO Dinero DE Anuncios GRUPO POR Categoría

Ejemplo 13. La base de datos y la tabla son las mismas que en el ejemplo anterior.

Utilice la instrucción GROUP BY de SQL para averiguar qué parte de cada categoría tenía más anuncios. Escribimos la siguiente solicitud:

SELECCIONAR Categoría, Parte, MÁXIMO (Unidades) COMO Máximo DE Anuncios GRUPO POR Categoría

El resultado será la siguiente tabla:

Se pueden obtener valores totales e individuales en una tabla combinar los resultados de la consulta con el operador UNION .

Bases de datos relacionales datos y lenguaje SQL



¿Te gustó el artículo? Compártelo