Está en la página 1de 3

CHAPTER 4

ORDER BY
En SQL, la palabra clave ORDER BY se usa para ordenar los resultados en orden ascendente o
descendente de acuerdo con los valores de una o más columnas. Por defecto ORDER BY se
ordenará en orden ascendente. Si desea ordenar los resultados en orden descendente, puede
usar la DESC palabra clave. Por ejemplo,
-SELECT title FROM films ORDER BY release_year DESC;
Devuelve los títulos de las películas ordenadas por año de lanzamiento, desde las mas
recientes hasta la más antigua.
-SELECT name FROM people ORDER BY name;
Devuelve los nombre sde las personas ordenados de A a Z
-SELECT name FROM people ORDER BY birthdate;
Devuelve el nombre de las personas ordenadas por fecha de nacimiento.
- SELECT name, birthdate FROM people ORDER BY birthdate;
Devuelve el nombre y la fecha de nacimiento de las personas ordenadas por su nacimiento
-SELECT title FROM films WHERE release_year = 2000 OR release_year = 2012 ORDER BY
release_year ;
Devuelve el titulo de las películas estrenadas en el año 2000 o 2012 ordenadas por su año de
estreno.
-SELECT * FROM films WHERE release_year <> 2015 ORDER BY duration;
Devuelve todos los detalles de todas las películas excepto las que fueron estrenadas el 2015 y
ordenadas por el tiempo de duración.
-SELECT title,gross FROM films WHERE title LIKE 'M%' ORDER BY title;
Devuelve el titulo y las recaudaciones de las películas que comienzan con M y ordenadas
alfabéticamente.
-SELECT name FROM people ORDER BY name DESC;
Devuelve los nombres ordenados de Z a A
-SELECT imdb_score, film_id FROM reviews ORDER BY imdb_score DESC;
Devuelve la clasificación y el score de cada película de la tabla reviews ordenadas por el score
de forma descendente.
-SELECT certification,release_year, title FROM films ORDER BY certification, release_year;
Devuelve la certificación, el año de estre y el titulo de las películas ordenadas alfabéticamente
por su cetificacion y su año de estreno.
GROUP BY
AGRUPAR POR
¡Ahora sabes cómo ordenar los resultados! A menudo necesitará agregar resultados. Por
ejemplo, es posible que desee contar el número de empleados masculinos y femeninos en su
empresa. Aquí, lo que quieres es agrupar a todos los machos y contarlos, y agrupar a todas las
hembras y contarlas. En SQL, le GROUP BY permite agrupar un resultado por una o más
columnas, así:
SELECT sex, count(*) FROM employees GROUP BY sex;
Esto podría dar, por ejemplo:
Comúnmente, GROUP BY se usa con funciones agregadas como COUNT()o MAX(). ¡Tenga en
cuenta que GROUP BY siempre va después de la FROM cláusula!
Como acaba de ver, ¡combinar funciones agregadas con GROUP BY puede producir algunos
resultados poderosos!
Una advertencia: SQL devolverá un error si intenta SELECT un campo que no está en su GROUP
BY cláusula sin usarlo para calcular algún tipo de valor sobre todo el grupo.
Tenga en cuenta que puede combinar GROUP BY con ORDER BY agrupar sus resultados,
calcular algo sobre ellos, y luego ordenar los resultados. Por ejemplo,
-SELECT sex, count(*) FROM employees GROUP BY sex ORDER BY count DESC;
podría devolver algo como
sexo contar
hembra 19
masculino 15
porque hay más mujeres en nuestra empresa que hombres. Tenga en cuenta también que
ORDER BY siempre va después GROUP BY. ¡Probemos algunos ejercicios!
-SELECT release_year, COUNT(*) from films GROUP BY release_year;
Devuelve la cantidad de películas estrenadas en cada año.
-SELECT release_year, AVG(duration) from films GROUP BY release_year;
Devuelve el año de lanzamiento y la duración promedio de las películas agrupadas por año de
lanzamiento.
-SELECT release_year, MAX(budget) FROM films GROUP BY release_year;
Devuelve las películas agrupadas por su año de lanzamiento y su duración máxima
-SELECT release_year, MIN(gross) FROM films GROUP BY release_year ;
Devuelve el año de estreno y nas ganancias brutas mas bajas agrupadas por año de estreno.
-SELECT language, SUM(gross) from films GROUP BY language;
Devuelve el idioma y la cantidad de películas en ese idioma realizado..
-SELECT country, SUM(budget ) FROM films GROUP BY country;
Devuelve la cantidad de presupuesto gastado en cada país
-SELECT release_year, country, MAX(budget) FROM films GROUP BY release_year, country
ORDER BY release_year, country;
Devuelve el presupuesto máximo para cada año en cada país y ordenado por año de
lanzamiento y país.
-SELECT country, release_year, MIN(gross) FROM films GROUP BY release_year, country
ORDER BY country, release_year;
Devuelve la recaudación minimica de cada película agrupada por año de estreno y por país,
ordenada por país y año de estreno.
HAVING
En SQL, las funciones agregadas no se pueden usar en WHERE cláusulas. Por ejemplo, la
siguiente consulta no es válida:
SELECT release_year
FROM films
GROUP BY release_year
WHERE COUNT(title) > 10;
Esto significa que si desea filtrar en función del resultado de una función agregada, ¡necesita
otra forma! Ahí es donde HAVING entra la cláusula. Por ejemplo,
SELECT release_year
FROM films
GROUP BY release_year
HAVING COUNT(title) > 10;
muestra solo aquellos años en los que se estrenaron más de 10 películas.
-SELECT release_year, AVG(budget) AS avg_budget, AVG(gross) AS avg_gross
from films
where release_year > 1990
GROUP BY release_year
HAVING AVG(budget) > 60000000
ORDER BY AVG(gross);
Devuelve el año, el presupuesto promedio con el alias avg_budget y la recaudación promedio
con el alias avg_gross, de la tabla films cuando el año de lanzamiento es mayor a 1990,
agrupándolos por año de lanzamiento con un presupuesto promedio mayor a 60 millones y
ordenados por recaudación promedia xddddddd
EJERCICIO: Obtenga el país, el presupuesto promedio y la toma bruta promedio de los países
que han realizado más de 10 películas. Ordene el resultado por nombre de país y limite el
número de resultados que se muestran a 5. Debe asignar un alias a los promedios como
avg_budget y avg_gross respectivamente.
-SELECT country, AVG(budget) AS avg_budget, AVG(gross) AS avg_gross
FROM films
GROUP BY country
HAVING COUNT(title)>10
ORDER BY country
LIMIT 5;

También podría gustarte