GROUP BY y ORDER BY
Sentencia GROUP BY
La sentencia GROUP BY se usa para agrupar los registros obtenidos en los resultados de una consulta de búsqueda por una o más columnas. GROUP BY permite que datos idénticos se agrupen juntos y se muestren secuencialmente. Cuando hay valores duplicados en una columna, la sentencia GROUP BY muestra los duplicados juntos. Los registros se ordenan luego según otras columnas.
La sentencia GROUP BY está asociada con la sentencia SELECT y se usa frecuentemente con las funciones ZCQL. Se usa hacia el final de la consulta y por lo tanto debe satisfacer las sentencias JOIN y seguir las condiciones WHERE.
La sintaxis básica para usar una sentencia GROUP BY junto con la sentencia SELECT es la siguiente:
SELECT column_name(s) FROM parent_table_name GROUP BY column_name(s)
Ejemplo:
Para ver una lista de teatros y sus ubicaciones de la tabla Theaters, agrupados por la ubicación de los teatros, ejecuta la siguiente consulta:
SELECT TheaterName, Location FROM Theaters GROUP BY Location
Esto generará la siguiente salida:
| TheaterName | Location |
|---|---|
| Cosmos Theater | Albany |
| FunTime Cinemas | Buffalo |
| The Express Cinemas | New York City |
| ANC Cinemas | Rochester |
Función BINARYOF()
La función BINARYOF() solo se puede usar en una sentencia GROUP BY. La función se puede usar en lugares donde desees producir una salida que no sea sensible a mayúsculas y minúsculas y considere todos los valores en una columna de una tabla.
La función BINARYOF() solo se puede usar en columnas con tipo de dato VarChar o Text.
Por ejemplo, considera la siguiente tabla Zylker_EMP:
| Names |
|---|
| AMELIA BURROWS |
| amelia burrows |
| amelia Burrows |
| Amelia Burrows |
A continuación se muestra una sentencia ZCQL de ejemplo para ilustrar la funcionalidad de BINARYOF() y su posible salida:
SELECT Names FROM Zylker_EMP GROUP BY BINARYOF(Names)
| Zylker_EMP.Names |
|---|
| AMELIA BURROWS |
| amelia burrows |
| amelia Burrows |
| Amelia Burrows |
-
Esta funcionalidad solo está disponible en ZCQL V2.
-
A partir del 1 de diciembre de 2024, todos tus proyectos actuales en todas tus Organizaciones presentes en el Entorno de Desarrollo se mapearán automáticamente al ZCQL V2 Parser.
-
A partir del 1 de abril de 2025, todos los proyectos presentes en todas las Organizaciones que ya hayan sido mapeados al ZCQL V2 Parser en el Entorno de Desarrollo se mapearán automáticamente al ZCQL V2 Parser en el Entorno de Producción, si y cuando se habilite la producción para el proyecto.
Sentencia ORDER BY
La sentencia ORDER BY se usa para ordenar los registros obtenidos en los resultados de una consulta de búsqueda en orden ascendente o descendente, basándose en una o más columnas. Cuando la sentencia ORDER BY se usa para ordenar datos textuales, ordena los registros en orden alfabético.
Similar a la sentencia GROUP BY, la sentencia ORDER BY está asociada con la sentencia SELECT y se usa frecuentemente después de la sentencia GROUP BY. Se usa hacia el final de la consulta, después de las sentencias de la cláusula JOIN o las condiciones WHERE, si están presentes, pero antes de la cláusula LIMIT. La sentencia ORDER BY debe entonces satisfacer las sentencias JOIN y seguir las condiciones WHERE.
-
Si hay valores duplicados en una columna, la sentencia ORDER BY mostrará los duplicados juntos. Los registros se ordenan luego según otras columnas.
-
Las funciones ZCQL también se pueden usar con sentencias ORDER BY.
La sintaxis básica para usar una sentencia ORDER BY con la sentencia SELECT es la siguiente:
SELECT column_name(s) FROM parent_table_name ORDER BY column_name(s) [ASC | DESC]
-
Por defecto, la sentencia ORDER BY ordena los registros en orden ascendente sin usar la palabra clave ‘ASC’. Para ordenar los registros en orden descendente, deberás usar la palabra clave ‘DESC’.
-
En todas las columnas donde uses la cláusula ORDER BY, la funcionalidad de ASC y DESC ahora se puede aplicar. También puedes aplicar ASC y DESC para columnas individuales.
Ejemplo:
Para ver una lista de los precios de entradas de la tabla Pricing en orden descendente para cada película de la tabla Movies, ejecuta la siguiente consulta:
SELECT Movies.MovieName, Pricing.Price FROM Movies
INNER JOIN Pricing ON Movies.MovieID = Pricing.MovieID
ORDER BY Pricing.Price DESC
Esto generará la siguiente salida:
| MovieName | Price |
|---|---|
| Hotel Transylvania 3: Summer Vacation | 11.50 |
| The First Purge | 9.20 |
| Ant-Man and the Wasp | 8.64 |
| Skyscraper | 7.44 |