Botón para abrir el Menú Botón para cerrar el Menú
Logo da empresa Alura
Iniciar Sesión Nuestros Planes
Formaciones Conoce a Luri
  • Programación _
  • Front End _
  • Data Science _
  • DevOps _
  • Innovación y Gestión _
Artículos de Tecnología > Data Science

Funciones de agregación con GROUP BY en SQL, ¿cómo utilizarlas?

Alura
Alex Felipe
Alex Felipe
22/09/2020

Compartir

Conocer las funciones predefinidas de SQL nos ayuda a tener más productividad en el día a día, en este artículo mostraré cómo utilizar las funciones de agregación con GROUP BY.

Creé una tabla libros e inserté todas las compras que realicé:

SELECT * FROM libros;
id: 1
nombre: Plataforma Java EE
autor: Alberto Souza
valor: 39.90
fecha_compra: 2015-12-05
id: 2
nombre: Google Android 
autor: João Bosco Monteiro
valor: 25.90
fecha_compra: 2015-12-10
id: 3
nombre: Spring MVC
autor: Alberto Souza
valor: 45.90
fecha_compra: 2015-12-10
id: 4
nombre: A Web Mobile
autor: Sergio Lopes
valor: 26.90
fecha_compra: 2016-01-04
id: 5
nombre: REST
autor: Alexandre Saudate
valor: 39.90 
fecha_compra: 2015-01-12
id: 6
nombre: SQL
autor: Eduardo Gonçalves
valor: 23.90 
fecha_compra: 2015-12-05

¡Excelente! Los libros que compré están bien ordenados. Hasta puedo hacer queries para verificar, por ejemplo, cuáles fueron los libros que pagué más que R$ 30,00:

SELECT * FROM libros 
WHERE valor > 30;
SELECT * FROM libros;
id: 1
nombre: Plataforma Java EE
autor: Alberto Souza
valor: 39.90
fecha_compra: 2015-12-05
id: 3
nombre: Spring MVC
autor: Alberto Souza
valor: 45.90
fecha_compra: 2015-12-10
id: 5
nombre: REST
autor: Alexandre Saudate
valor: 39.90 
fecha_compra: 2015-01-12

Sin embargo, ahora quería saber cuánto gasté con todos los libros que pagué más que R$ 30,00. Es decir, ¡quiero hacer una suma! ¿Cómo podemos hacer eso en SQL? Es muy sencillo: ya existen funciones predefinidas por las bases de datos para realizar cálculos. Podemos, por ejemplo, usar la función SUM para sumar:

SELECT SUM(valor) AS total
FROM libros WHERE valor > 30;
total  | 125.70 

Estas funciones se llaman funciones de agregación. Ellas agrupan todas las líneas encontradas y devuelven solo una única línea con el resultado de la operación requerida. En este caso, una suma :)

Conseguí verificar cuánto gasté con libros sobre los R$ 30,00, pero ahora necesito saber ¡cuánto gasté por mes! En mi tabla, las fechas son completas, es decir: tiene día, mes y año. Pero, en este caso, solo necesito del mes... ¿cómo podemos devolver solo el mismo de una fecha? ¡Sencillo! De la misma forma que la base de datos facilitó una función para sumar, ¡también facilita una función para devolver el mes de una fecha! Utilizamos MONTH() que extrae el mes de una determinada fecha:

SELECT nombre, valor, MONTH(fecha_compra) AS mes FROM libros;
id: 1
nombre: Plataforma Java EE
autor: Alberto Souza
valor: 39.90
mes: 12
id: 2
nombre: Google Android 
autor: João Bosco Monteiro
valor: 25.90
mes: 12
id: 3
nombre: Spring MVC
autor: Alberto Souza
valor: 45.90
mes: 12
id: 4
nombre: A Web Mobile
autor: Sergio Lopes
valor: 26.90
mes: 1
id: 5
nombre: REST
autor: Alexandre Saudate
valor: 39.90 
mes: 1
id: 6
nombre: SQL
autor: Eduardo Gonçalves
valor: 23.90 
mes: 12

Entonces, ahora que sabemos cómo sumar y como tomar el mes, ¡basta juntar las dos funciones! Vamos a hacer nuestra nueva query:

SELECT SUM(valor) AS total, MONTH(fecha_compra) AS mes FROM libros;
total  | 125.70 

Oye, ¿solo mes 12? ¿Y R$ 202,40 solo en el mes 12? Estoy casi seguro que no fue tanto así. Filtremos esta query para que devuelva solo los libros comprados en el mes 12:

SELECT SUM(valor) AS total, MONTH(fecha_compra) AS mes FROM libros WHERE MONTH(fecha_compra) = 12;
total: 135.60
mes: 12

¿Qué está pasando? ¿No podemos exhibir más de una línea con una función de agregación? Muy raro eso. Como vimos, las funciones de agregación en principio devuelven solo una única línea. Lo que tenemos que hacer es informar que queremos agrupar las líneas por mes, ¡sumarlas! Para ello utilizaremos la instrucción GROUP BY informando qué columna queremos agrupar:

SELECT SUM(valor) AS total, MONTH(fecha_compra) AS mes 
FROM libros 
GROUP BY MONTH(fecha_compra);
total: 66.80
mes: 1
total: 135.60
mes: 12

¡Excelente, mira que ahora podemos comprobar cuanto se ha gastado al mes! Vimos que cuando usamos funciones de agregación (como SUM()) por estándar el blanco nos devuelve solo una única línea con el resultado de todas las líneas que se encontraron. Pero, si queremos que la función agrupe por diferente de otra columna (como el mes), debemos informar que esta columna será agrupada usando la instrucción GROUP BY.

Entonces, ¿le gustó la función SUM() y el GROUP BY? ¿Estás listo para usarla en su base de datos? Para continuar desarrollandote, ¡mira nuestros cursos de Data Science aquí en Alura!

Alex Felipe
Alex Felipe

Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Atualmente cria conteúdo no canal https://www.youtube.com/@AlexFelipeDev.

Siguiente Artículo
Ordenar listas en Python

Ver otros artículos sobre Data Science

Navegación

  • Planes
  • Instructores
  • Blog
  • Política de privacidad
  • Términos de uso
  • Sobre nosotros
  • Preguntas frecuentes

¡CONTÁCTANOS!

  • ¡Quiero entrar en contacto!

Blog

  • Programación
  • Data Science
  • Front End
  • Innovación y Gestión
  • DevOps

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

NOVEDADES Y LANZAMIENTOS

Aliados

  • Programa de aceleração Scale-Up Endeavor
  • En Alura somos unas de las Scale-Ups seleccionadas por Endeavor, programa de aceleración de las empresas que más crecen en el país.
  • Growth Academy 2021 do Google For Startups
  • Fuimos unas de las 7 startups seleccionadas por Google For Startups en participar del programa Growth Academy en 2021
Alura

Una empresa del grupo Alun

Logo do grupo Alun

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

Cursos

Cursos de Programación
Lógica de Programación | Java
Cursos de Front End
HTML y CSS | JavaScript | React
Cursos de Data Science
Data Science | Machine Learning | Excel | Base de Datos | Data Visualization | Estadística
Cursos de DevOps
Docker | Linux
Cursos de Innovación y Gestión
Transformación Ágil | Marketing Analytics

Alura

  • Educação em Tecnologia

    • logo fiap FIAP
    • logo casa do codigo Casa do Código
    • logo pm3 PM3 - Cursos de Produto
  • Mais Alura

    • logo alura start START BY Alura
    • logo alura lingua Alura Língua
    • logo alura para empresas Alura Para Empresas
    • logo alura latam Alura LATAM
  • Comunidade

    • logo tech guide Tech Guide
    • logo 7 days of code 7 days of code
    • logo Hipsters ponto Jobs Hipsters ponto Jobs
  • Podcasts

    • logo Hipster Network Hipster Network
    • logo Hipsters ponto Tech Hipsters ponto Tech
    • logo Dev sem fronteiras Dev sem Fronteiras
    • logo Like a Boss Like a Boss
    • logo IA Sob Controle IA Sob Controle
    • logo Mesa de Produto Mesa de Produto
    • logo Decode Decode
    • logo FIAPCast FIAPCast