En este capítulo hablaremos sobre las sentencias ORDER BY y GROUP BY.
ORDER BY
Imaginemos que queremos que nos traigan los registros ordenados según un campo, para ello sirve la sentencia ORDER BY, cuya sintaxis es la siguiente.
Ejm
SELECT * FROM ejemplo.contactos ORDER BY nombre;
En este caso ordenamos los registros ordenados alfabéticamente según el campo nombre. Por defecto, cuando utilizamos esta sentencia, los registros se ordenan de manera ascendente (de la A a la Z), si quisiéramos ordenarlos de manera descendente tendríamos que usar la siguiente sintaxis.
Ejm
SELECT * FROM ejemplo.contactos ORDER BY nombre DESC;
También podríamos utilizar la sentencia ASC si quisiéramos ordenarlo de manera ascendente (la que se ordena por defecto).
GROUP BY
Si tenemos varias direcciones repetidas y queremos saber cuantas personas viven en la misma dirección, la sentencia GROUP BY nos puede ayudar, de la siguiente manera.
Ejm
SELECT direccion FROM ejemplo.contactos GROUP BY direccion;
Esto lo que hará es que traerá las direcciones únicas, que no se repiten, pero lo que quiero saber es cuantas personas viven una misma dirección, para ello vamos a hacer uso de la sentencia COUNT(*) de la siguiente manera.
Ejm
SELECT direccion, COUNG(*) FROM ejemplo.contactos GROUP BY direccion;
Esto nos devolverá una consulta en la cual mostrará en un campo las direcciones y en otro las personas que viven en cada dirección.
Sentencia HAVING
Ahora vamos a hacer una consulta en la que nos muestre las direcciones en las que viva más de una persona, para ello hacemos uso al final de nuestra consulta de la sentencia HAVING, de la siguiente manera.
Ejm
SELECT direccion, COUNG(*) FROM ejemplo.contactos GROUP BY direccion HAVING COUNT(*) > 1;
Se puede usar para ello los caracteres: <, >, <=, >=, <>, !=.
La sentencia HAVING sólo la podemos utilizar en el caso que estemos utilizando la sentencia GROUP BY.