No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso Práctico de SQL

Curso Práctico de SQL

Israel Vázquez Morales

Israel Vázquez Morales

Ordenamiento (ORDER BY)

8/29
Recursos

Aportes 20

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Resumen de la clase:
Las partes más importantes y más usadas de los queries de SQL son:
-La proyección (con SELECT)
-El origen de los datos (Con FROM y sus JOIN)
-WHERE, que nos ayuda a filtrar las tuplas dependiendo de las condiciones que se cumplan.

Hay otras partes de los queries que son opcionales, que no encontraremos en todos los queries pero que igual juegan un papel muy importantes. Una de ellas es el ordenamiento (ORDER BY)

INDICES:
excelentes para búsquedas y ordenamientos, cuando estamos haciendo queries complejos, cuando estamos tratando de extraer información constantemente, haciendo joins complicados a través de esos campos y nos sirve tener un índice que guarde el orden de ese campo en particular para hacer extracciones muy rápidas.

CUIDAR PARA ALTA TRANSACCIONALIDAD:
la contrapartida de esto es que cuando tienes un índice, la parte de escritura, cuando llegas a hacer un Update de esa columna en particular en la que pusiste un índice, entonces cada escritura tardará un poco más que la anterior porque básicamente agrega un nuevo elemento, revisa todos elementos anteriores y posteriores y vuelve a ordenarlos en el índice y si agregamos otro elemento vuelve a revisar todos y a ordenarlos.

No debemos poner índices por poner sino ser muy cuidadosos de aquellas columnas que hacemos JOIN muy seguido o que tienen muchísimos datos y siempre estamos ordenando por esa columna. Es válido ponerlo pero siempre teniendo en cuenta que cuando tenemos que ingerir muchos datos o hacer muchos INSERT no es bueno tener índices en esas tablas (o tener la menor cantidad de índices posible). Es importante tener en mente cuántas lecturas Vs cuántas escrituras haces en una tabla o en un campo particular para decidir si conviene poner un índice. Si vas a hacer muchas escrituras por segundo no es conveniente poner índices o tratar de mantenerlo al mínimo. En cambio, si realmente escribes muy poco en esa tabla pero haces búsquedas constantes y muchos Joins sobre esa tabla entonces vale la pena usar el índice sobre ese campo en particular donde haces el Join o donde haces el ordenamiento porque es un gran complemento para nuestra cláusula ORDER BY.

Ordenamiento ORDER BY

ORDER BY se usa para ordenar de forma ascendente o descendente columnas en base a una fila determinada. Por defecto lo hace de forma DESC. Organiza todo alfabéticamente o numéricamente si son números.

SELECT *
FROM tabla_diaria
ORDER BY fecha;

SELECT *
FROM tabla_diaria
ORDER BY fecha ASC;

SELECT *
FROM tabla_diaria
ORDER BY fecha DESC;

La sentencia ORDER BY tiene que ver con el ordenamiento de los datos dependiendo de los criterios que quieras usar.

  • ASC sirve para ordenar de forma ascendente.

  • DESC sirve para ordenar de forma descendente.

  • LIMIT se usa para limitar la cantidad de resultados que arroja el query.

  • HAVING tiene una similitud muy grande con WHERE, sin embargo el uso de ellos depende del orden. Cuando se quiere seleccionar tuplas agrupadas únicamente se puede hacer con HAVING.

  • HAVING es similar a WHERE aunque no muy utilizada, pero es necesaria cuando quieres hacer un filtro con datos agrupados por un ORDER BY, HAVING siempre va despues del GROUP BY

Esto se pone cada vez mejor:

  • Order BY DESC;

ORDER BY ASC;

Me hubiese gustado que el tema de los indices, se viera mas practico, tanto el ejemplo de una tabla que se complicaria tenerlo o el ejemplo donde si tenemos un indice nos hace la vida mas facil

Hmmm esto me recuerda mucho a los índices de Firebase, donde Google crea índices por cada query compleja que se ejecute, así simplemente tiene que ir a buscar el resultado en lugar de ejecutar de nuevo el query.

Aun así, dice que el motor de bases de datos ya los trabaja por defecto, pero también dice que no debemos usar índices cuando escribimos muchos, pero si ya los trabaja por defecto entonces ¿Cómo se deshabilitan esos índices? 🤔

https://www.youtube.com/watch?v=y1TxR53RlYU

Aquí aclaré dudas respecto al tema de índices.

Mis notas personales sobre ORDER BY:

Ordenamiento (ORDER BY)

  • ORDER BY campo: ordena ascendentemente por default
  • ORDER BY campo ASC: lo mismo pero explícito
  • ORDER BY campo DESC: de manera descendente

Índices

  • Excelentes para búsquedas y ordenamientos
  • Cuidar para alta transaccionalidad
  • El tiempo de escritura se suma porque se crea el índice
  • Usar únicamente cuando hay muchas lecturas pero pocas escrituras en la tabla

Ordenamiento

 SELECT *
  FROM PRUEBAS.ALUMNOS
ORDER BY fecha_incorporacion;

Ascendente

 SELECT *
  FROM PRUEBAS.ALUMNOS
ORDER BY fecha_incorporacion ASC;

Descendente

 SELECT *
  FROM PRUEBAS.ALUMNOS
ORDER BY fecha_incorporacion DESC;
hola a todos, también se puede manejar una vista de la misma tabla y trabajar sobre está vista, en vez de la tabla real, esto ayudaría

Usamos OrdenBY para el ordenamiento:

…ORDER BY fecha : Pone la consulta ordenada en base a las fechas, por default ascendente
…ORDER BY fecha ASC : Para enfatizar que el orden sea ascendente
…ORDER BY fecha DESC : Para enfatizar que el orden sea descendente

Ordenamiento ORDER BY
ORDER BY se usa para ordenar de forma ascendente o descendente columnas en base a una fila determinada. Por defecto lo hace de forma DESC. Organiza todo alfabéticamente o numéricamente si son números.

Un query medio raro pero util para probar jajaja

SELECT * 
FROM platzi.alumnos 
WHERE 
	id > 10 
	AND id <= 20 
	OR id = 2 
	OR nombre LIKE 'W%'
	ORDER BY nombre DESC

Un pequeño aporte haciendo uso de ORDER BY, el resultado es el conteo de las carreras más utilizadas en orden de mayor a menor:

SELECT carrera, COUNT(*) AS conteo 
FROM platzi.alumnos AS ta
JOIN platzi.carreras AS tc
ON ta.carrera_id = tc.id
GROUP BY carrera
ORDER BY conteo DESC
;

Veo que siempre inicia con Select * luego el FROM, voy entendiendo

6. ORDENAMIENTO (Order By) --> Ordenar por
  • SELECT *
    FROM tabla_diaria
    ORDER BY fecha ; —> Es un ordenamiento básico ascendente
  • SELECT *
    FROM tabla_diaria
    ORDER BY fecha ASC ; —> Este es un ordenamiento explícito ascendente
  • SELECT *
    FROM tabla_diaria
    ORDER BY fecha DESC ; —> Este es un ordenamiento explícito descendente
  • Cuando la búsqueda y ordenación requiere una mayor complejidad, se hacen necesarios los índices:

Nos ayuda a tener indexado internamente en la tabla cada dato de la columna.

SELECT NombreSucursal,AVG(ImporteDeposito) FROM deposito GROUP BY NombreSucursal ORDER BY AVG(ImporteDeposito) DESC LIMIT 3```