En SQL, es fundamental comprender cómo utilizar las funciones agregadas y cómo agrupar datos para obtener resultados resumidos y específicos. A continuación, se presentan las funciones más comunes y su uso.
Para ilustrar mejor, trabajaremos con las siguientes tablas:
usuarios| id | nombre |
|-----|----------|
| 1 | Juan |
| 2 | María |
| 3 | Pedro |
| 4 | Ana | pedidos| id | usuario_id | producto |
|-----|------------|---------------|
| 1 | 1 | Producto A |
| 2 | 1 | Producto B |
| 3 | 2 | Producto C |
| 4 | 3 | Producto D | Las funciones agregadas en SQL son funciones que realizan cálculos sobre un conjunto de valores y devuelven un único valor.
Ejemplos comunes son SUM(), COUNT(), AVG(), MIN(), y MAX(), que se utilizan para sumar, contar, promediar o encontrar valores mínimos y máximos en un grupo de datos.
COUNTLa función COUNT se utiliza para contar el número de registros que cumplen una condición.
SELECT COUNT(*) AS total_usuarios FROM usuarios; | total_usuarios |
|----------------|
| 4 | SUMLa función SUM se utiliza para calcular la suma de un campo numérico.
SELECT SUM(id) AS suma_ids FROM usuarios; | suma_ids |
|----------|
| 10 | AVGLa función AVG se utiliza para calcular el promedio de un campo numérico.
SELECT AVG(id) AS promedio_ids FROM usuarios; | promedio_ids |
|--------------|
| 2.5 | MINLa función MIN se utiliza para encontrar el valor mínimo de un campo.
SELECT MIN(id) AS id_minimo FROM usuarios; | id_minimo |
|-----------|
| 1 | MAXLa función MAX se utiliza para encontrar el valor máximo de un campo.
SELECT MAX(id) AS id_maximo FROM usuarios; | id_maximo |
|-----------|
| 4 | GROUP BYLa cláusula GROUP BY se utiliza para agrupar los resultados de una consulta según una o más columnas.
SELECT usuario_id, COUNT(*) AS total_pedidos
FROM pedidos GROUP BY usuario_id; | usuario_id | total_pedidos |
|------------|---------------|
| 1 | 2 |
| 2 | 1 |
| 3 | 1 | HAVINGLa cláusula HAVING se utiliza para filtrar los resultados después de aplicar la cláusula GROUP BY.
SELECT usuario_id, COUNT(*) AS total_pedidos
FROM pedidos GROUP BY usuario_id
HAVING COUNT(*) > 1; | usuario_id | total_pedidos |
|------------|---------------|
| 1 | 2 |