Saltar al contenido

SQL: uso de alias en Agrupar por

Haz todo lo posible por comprender el código correctamente previamente a utilizarlo a tu proyecto y si ttienes algo que aportar puedes dejarlo en los comentarios.

Solución:

SQL se implementa como si se ejecutara una consulta en el siguiente orden:

  1. Cláusula DESDE
  2. Dónde cláusula
  3. Cláusula GROUP BY
  4. Cláusula HAVING
  5. Cláusula SELECCIONAR
  6. Cláusula ORDER BY

Para la mayoría de los sistemas de bases de datos relacionales, este orden explica qué nombres (columnas o alias) son válidos porque deben haberse introducido en un paso anterior.

Entonces, en Oracle y SQL Server, no puede usar un término en la cláusula GROUP BY que defina en la cláusula SELECT porque GROUP BY se ejecuta antes que la cláusula SELECT.

Sin embargo, hay excepciones: MySQL y Postgres parecen tener inteligencia adicional que lo permite.

Siempre puede usar una subconsulta para poder usar el alias; Por supuesto, verifique el rendimiento (es posible que el servidor db se ejecute de la misma manera, pero nunca está de más verificarlo):

SELECT ItemName, FirstLetter, COUNT(ItemName)
FROM (
    SELECT ItemName, SUBSTRING(ItemName, 1, 1) AS FirstLetter
    FROM table1
    ) ItemNames
GROUP BY ItemName, FirstLetter

Al menos en PostgreSQL puede usar el número de columna en el conjunto de resultados en su cláusula GROUP BY:

SELECT 
 itemName as ItemName,
 substring(itemName, 1,1) as FirstLetter,
 Count(itemName)
FROM table1
GROUP BY 1, 2

Por supuesto, esto comienza a ser una molestia si lo hace de forma interactiva y edita la consulta para cambiar el número o el orden de las columnas en el resultado. Pero aún.

Aquí tienes las comentarios y puntuaciones

Puedes favorecer nuestra misión exponiendo un comentario y valorándolo te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *