Mostrando entradas con la etiqueta group by. Mostrar todas las entradas
Mostrando entradas con la etiqueta group by. Mostrar todas las entradas

¿Se puede agrupar por rangos de valores?

Esta mañana en clase, me habéis preguntado si al agrupar podemos utilizar rangos de valores para definir los grupos. Mi respuesta ha sido que no. Los grupos se definen en base a valores concretos de los componentes del criterio de agrupación. Pero podemos aplicar un truquillo para conseguir esa agrupación por rangos (a esta técnica se llama SQL Binning).

Uso de CASE como si fuese GROUP BY

AUTORA: María González García

Al realizar cálculos sobre agrupaciones de tuplas según los valores de un campo, podemos plantearnos esta cuestión: ¿deberíamos utilizar GROUP BY o CASE?

Aunque GROUP BY es generalmente la opción más directa y eficiente para agrupar y calcular datos, existen situaciones donde CASE puede ofrecer una flexibilidad única y su uso se vuelva necesario. Por otra parte, dicha elección también puede depender de las necesidades visuales o preferencias de formato del resultado a obtener, ya que cada método ofrece una presentación y organización de los datos distinta.

Ejercicio típico: entidades que se relacionan con dos (o más) entidades de otro tipo

Un tipo de consulta habitual es la que pretende obtener datos de una entidad de un tipo dado (entidad A) que se relacionan con varias (dos o más) de otra entidad de otro tipo (entidad B). P.ej.: alumnos (A) que están matriculados en dos asignaturas (B) dadas, proyectos (A) en los que trabajan al mismo tiempo dos empleados (B) dados, etc.

Todo lo que esté en el having, y que no sean funciones de agregación, debe estar en el group by

En otra lección de este blog (que debes leer aquí antes que ésta) se discute sobre la regla de SQL que obliga a que, en una consulta de agrupación, si se quiere recuperar en el select algún dato (o expresión que use algún dato) que no sea el resultado de una función de agregación, ese dato debe estar en el criterio de agrupación de la cláusula group by. Esa regla también se aplica a la cláusula having: ésta solo puede tener funciones de agregación o campos del criterio de agrupación.

Todo lo que esté en el select, y que no sean funciones de agregación, debe estar en el group by

Cuando se hace una consulta de agrupación, SQL obliga a que todo aquello que se incluya en el select sea alguna de estas tres cosas:

  • campos del criterio de agrupación
  • expresiones que usen campos del criterio de agrupación
  • expresiones con funciones de agregación

En esta lección discutimos sobre esta regla de SQL.

Agrupar preferentemente incluyendo campos clave

Aunque no se pida explícitamente, siempre es más correcto, porque evita potenciales errores, incluir campos clave en el criterio de agrupación, además de los necesarios por estar incluidos en el select o having.

Pensar bien si hay que contar con distinct o sin él

Contar parece fácil. Pero hay que asegurarse de que no se cuentan valores repetidos, salvo que sea necesario. Este es un fallo frecuente. Lo estudiamos con unos sencillos ejemplos. 

No usar group by en vez de select distinct

Cuando se trata de encontrar resultados sin repetidos, puedes estar tentado de usar group by en vez de select distinct. Aquí te explicamos por qué no debes hacerlo.