CodeGym /Cursos /SQL & Hibernate /Agrupación de datos

Agrupación de datos

SQL & Hibernate
Nivel 2 , Lección 2
Disponible

3.1 Declaración GRUPO POR

El lenguaje SQL es muy poderoso. Además de la obtención de datos simple, le permite agrupar datos en el momento de la consulta. Por ejemplo, queremos saber cuántos tipos de productos de cada marca tenemos, ¿cómo podemos hacer eso?

Hay un operador especial para esto GROUP BY, así es como se escribe.

GROUP BY column

Escribamos una consulta que le pida a SQL que muestre la cantidad de tipos de productos para cada marca. Tal solicitud sería algo como esto:

SELECT brand, COUNT(*)
FROM product
GROUP BY brand

Obtendrá el siguiente resultado de la consulta:

marca contar(*)
(NULO) 2
el bosco 4
IKEA 6
LG 2
flor inteligente 1

Analicemos cuidadosamente qué tipo de solicitud escribimos y qué tipo de resultado obtuvimos. Como resultado, vemos dos columnas. El primero con una lista de marcas, lo cual es lógico. Queríamos obtener algo así como un conjunto de pares "marca --> cantidad" .

Tenga en cuenta que entre las marcas hay una palabra NULL. Efectivamente, tenemos productos de la marca en la que está escrito NULL, y los vemos aquí. Un poco inesperado, pero útil. Podemos ver cuántos productos sin marca hay.

Ahora echemos un vistazo más de cerca a la solicitud. Queríamos saber la cantidad de productos de cada marca, entonces escribimos , GROUP BY brandy en marca y la expresiónSELECTCOUNT(*)

COUNT(*)es una llamada función agregada que se realiza en un grupo de filas. En nuestro caso, simplemente cuenta su número. Hay muchas funciones de este tipo, y las veremos un poco más adelante.

3.2 Consultas complejas con GROUP BY

Ahora, escribamos una consulta en la que primero descartemos productos cuyo precio sea inferior a 10 y luego los agrupemos. Tal solicitud sería algo como esto:

SELECT brand, COUNT(*)
FROM product
WHERE price > 10
GROUP BY brand

Obtendrá el siguiente resultado de la consulta:

marca contar(*)
el bosco 4
IKEA 5
LG 2
flor inteligente 1

Todos los productos NULL desaparecieron de nuestra tabla de resultados, ya que eran muy baratos, y el número de productos IKEA disminuyó en 1. De 6 a 5.

Esto sugiere que primero aplique WHERElas líneas deseadas para filtrar y solo luego aplique la agrupación al resultado.

3.3 Nombres de columna del resultado

Por cierto, puede dar nombres a las columnas resultantes. ¿Ves cómo el servidor sugirió el nombre count(*)? Vamos a reemplazarlo con total. Tal solicitud sería algo como esto:

SELECT brand, COUNT(*) AS total
FROM product
WHERE price > 10
GROUP BY brand

Obtendrá el siguiente resultado de la consulta:

marca total
el bosco 4
IKEA 5
LG 2
flor inteligente 1

También puede cambiar el nombre de las columnas existentes. Tomemos una de las consultas utilizadas anteriormente y agreguemos nuevos nombres a las columnas.

SELECT
id AS  product_id,
name AS product_name,
price
FROM product
WHERE price < 20 AND brand IS NOT NULL

Obtendrá el siguiente resultado de la consulta:

ID del Producto nombre del producto precio
2 Silla 5.00
8 Lámpara 15.00
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION