1
respuesta

[Duda] Agrupación por Case

En el ejercicio el profesor agrupa usando el CASE completo:

GROUP BY ENVASE, CASE WHEN PRECIO_DE_LISTA >= 12 THEN 'COSTOSO' WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'ASEQUIBLE' ELSE 'BARATO' END

Mi pregunta es, ya que en la construcción del CASE se puso como alias PRECIO, ¿No es posible usar ese alias en la agrupación en lugar del CASE completo?

1 respuesta

Hola Hernán , espero que estés muy bien.

El alias definido en la expresión CASE no puede utilizarse directamente en la cláusula GROUP BY en la misma consulta SQL. En SQL, la cláusula GROUP BY se utiliza para agrupar filas en función de las columnas especificadas en la consulta original. Los alias definidos en la cláusula SELECT, como el alias "PRECIO", no son reconocidos en la cláusula GROUP BY, ya que la fase de agrupación se produce antes de la fase de selección en una consulta SQL.

Por lo tanto, en el contexto de la agrupación, debes usar la expresión CASE completa como se muestra en tu consulta:

GROUP BY ENVASE, CASE WHEN PRECIO_DE_LISTA >= 12 THEN 'COSTOSO' WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'ASEQUIBLE' ELSE 'BARATO' END

El alias "PRECIO" solo estaría disponible en la lista de selección, en cláusulas como ORDER BY o HAVING, pero no en GROUP BY. Debes repetir la expresión CASE completa en la cláusula GROUP BY para agrupar correctamente los datos según los criterios definidos en esa expresión.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios