Una guía paso a paso para leer y comprender consultas SQL - KDnuggets

Una guía paso a paso para leer y comprender consultas SQL – KDnuggets

Nodo de origen: 3091384

Una guía paso a paso para leer y comprender consultas SQL
Imagen de Freepik
 

SQL, o lenguaje de consulta estándar, es un lenguaje de programación para administrar y manipular datos dentro de un sistema de administración de bases de datos relacionales (RDBMS). Es un lenguaje estándar utilizado en muchas empresas para ayudar a las empresas a acceder a los datos sin problemas. Debido a que se usa ampliamente, el empleo generalmente cita SQL como una de las habilidades necesarias. Por eso es esencial aprender sobre SQL.

Uno de los problemas comunes de las personas cuando aprenden SQL es entender las consultas, principalmente cuando las escribe otra persona. Trabajamos en equipo en las empresas y, a menudo, necesitamos leer y comprender sus consultas SQL. Por lo tanto, debemos practicar la deconstrucción de las consultas SQL y comprenderlas.

Este artículo recorrerá un proceso paso a paso para leer y comprender las consultas SQL. ¿Como hacemos eso? Entremos en ello.

Lo primero que debemos hacer cuando nos encontramos con una consulta SQL es comprender la intención general de las consultas SQL. La intención general no significa que conozcamos completamente la estructura de la consulta; se trata más de los flujos generales.

Debemos comprender las consultas SQL estándar para comprender la consulta SQL general. La mayoría de las consultas SQL comienzan con el SELECCIONAR cláusula y siga con el DESDE cláusula. A partir de ahí, las consultas suelen ir seguidas de SUSCRÍBETE, ¿Dónde?, GRUPO POR, ORDENAR POR, y TENIENDO cláusulas.

Las cláusulas anteriores son estándar en las consultas SQL que necesitamos comprender. Para cada cláusula, sus funciones son:

  1. SELECCIONAR: ¿Qué columnas se tomarán de la tabla?
  2. DESDE: De qué tabla provienen los datos
  3. SUSCRÍBETE: Combina tablas con el identificador especificado
  4. ¿Dónde?: Filtro de datos basado en la condición.
  5. GRUPO POR: Organice los datos según el valor de la columna y permita que se realice la función de agregación.
  6. ORDEN POR: Organice el orden de los resultados de los datos según la columna específica
  7. TENIENDO: La condición de filtro para la función de agregación que no se puede especificar con ¿Dónde?

Estas son las cláusulas estándar y lo que debe encontrar al principio para comprender la estructura general de consultas SQL. Usemos el código de ejemplo para aprender más.

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

Cuando observe la consulta anterior, intente identificar las cláusulas estándar. La cláusula le permitirá comprender qué datos se seleccionan (SELECCIONAR), de donde es (DESDE y SUSCRÍBETE), y la condición (¿Dónde?, GRUPO POR, ORDEN PORy TENIENDO). 

Por ejemplo, leer la consulta anterior le permitirá comprender lo siguiente:

  1. intentamos obtener tres tipos diferentes de datos: el Nombre de una tabla llamada clientes, el Producto de una tabla llamada compras y la agregación de columnas de precios que no identifican de dónde es la tabla y con el alias precio_total (Información de la cláusula SELECCIONAR). 
  1. Los datos generales provendrían de las tablas de compras y clientes que se unen usando la columna cust_id de compras y la columna id de la tabla del cliente (Información de la cláusula DE) y SUSCRÍBETE). 
  1. Solo seleccionaríamos los datos con el valor de la columna categoría en la tabla de compras como 'cocina' (Información de la cláusula ¿Dónde?), 
  1. grupo para la función de agregación con el nombre y la columna de producto que provienen de la tabla respectiva (Información de la cláusula GRUPO POR), 
  1. filtrado también desde la suma de resultados de la función de agregación donde el precio_total es superior a 10000 (información de la cláusula TENIENDO), o 
  1. ordenar los datos de forma descendente según el precio_total (información de la cláusula ORDEN POR).

Esa es la estructura general de consulta SQL que necesita conocer e identificar. A partir de ahí, podemos explorar más a fondo desde la consulta avanzada. Sigamos con el siguiente paso.

Habrá un momento en el que te encontrarás con una consulta compleja en la que tantos SELECCIONAR existen cláusulas en la misma consulta. En este caso, debemos entender el resultado final de la consulta o el final (primero) SELECCIONAR ves en la consulta. La clave es saber cuál quiere ser el resultado de la consulta.

Usemos un código más complejo como el siguiente.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

La consulta parece ahora más compleja y más larga, pero la atención inicial debería centrarse en la solución final. SELECCIONE, que parece intentar producir el historial total de compras y gastos del cliente. Intente evaluar cuál quiere ser el resultado final y desglose a partir de ahí.

Tenemos una idea del resultado que debe provenir de las consultas. La siguiente parte es ver cuáles son las condiciones para la final. SELECCIONAR son. La cláusula de condiciones, incluyendo ¿Dónde?, GRUPO POR, ORDEN PORy TENIENDO fueron los que controlaron el resultado general de los datos. 

Intente leer y comprender las condiciones de nuestra consulta y comprenderemos mejor el resultado final de nuestra consulta. Por ejemplo, en nuestra consulta SQL anterior, la condición final es solo la ORDEN POR. Esto significa que el resultado final estaría ordenado por el precio total del producto en orden descendente. 

Conocer las condiciones finales le ayudaría a comprender una parte importante de la consulta y la intención general de la misma.

Por último, debemos comprender de dónde provienen los datos. Una vez que conocemos los datos a seleccionar y las condiciones para obtenerlos, debemos comprender la fuente. El final SUSCRÍBETE La cláusula nos daría una idea de cómo interactúan las tablas y el flujo de datos.

Por ejemplo, la consulta compleja anterior muestra que realizamos Join dos veces. Significa que utilizamos al menos tres fuentes de datos para el resultado final. Esta información sería necesaria en los pasos posteriores para comprender mejor cómo surge cada fuente de datos, especialmente cuando la fuente de datos proviene de la subconsulta.

Después de entender cómo debe ser el resultado final y de dónde viene, debemos fijarnos más en los detalles. A partir de aquí, retrocederemos a cada subconsulta y entenderemos por qué están estructuradas de esa manera.

Sin embargo, no intentamos verlos en estructuras de arriba hacia abajo. En su lugar, deberíamos intentar mirar las subconsultas que están más cerca del resultado final y pasar a la que está más alejada del resultado final. A partir del ejemplo de código anterior, primero debemos intentar comprender este código:

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

Luego, pasamos al código más lejano, que es este:

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

Podemos rastrear claramente el proceso de pensamiento del autor cuando desglosamos cada subconsulta desde la más cercana al resultado hasta la más lejana. 

Intente repetir el proceso anterior si necesita ayuda para comprender cada subconsulta. Con un poco de práctica, tendrá una mejor experiencia al leer y comprender la consulta.

Leer y comprender consultas SQL es una habilidad que todo el mundo debería tener en la era moderna, ya que todas las empresas se ocupan de ellas. Si utiliza la siguiente guía paso a paso, podrá comprender mejor las consultas SQL complejas. Los pasos incluyen:

  1. Comprender la estructura general de consultas SQL
  2. Comprender la selección final
  3. Comprender la cláusula de condiciones finales
  4. Comprender la unión final
  5. Lectura de orden inverso y repetición

 
 

Cornelio Yudha Wijaya es subgerente de ciencia de datos y escritor de datos. Mientras trabaja a tiempo completo en Allianz Indonesia, le encanta compartir consejos sobre Python y datos a través de las redes sociales y los medios de escritura.

Sello de tiempo:

Mas de nuggets