0 xp Entrar
Unidad 17 · Lección 3 Excel, Python y SQL

Los datos ya están ahí. Aprende a hacerles preguntas.

La cadena de bicicletas (Lecciones 16.1 a 16.3) guarda cada venta en una base de datos: qué tienda, qué mes y cuánto. Tu gerente pregunta: "¿Cuánto vendió Austin este trimestre?" Nadie te manda una hoja de cálculo. La respuesta está en una tabla con millones de filas, y la forma de sacarla es SQL, un lenguaje para hacerle preguntas a una base de datos. Casi todos los bancos, fondos y empresas guardan sus datos así, y SQL es una de las habilidades que más piden los anuncios de trabajo en finanzas.

Qué

SQL (se dice "ese-cu-ele" o, en inglés, "sequel") es un lenguaje para sacar datos de una base de datos: las filas que quieres, sumadas como quieres.

Por qué

Los datos de una empresa son demasiado grandes para una hoja de cálculo. SQL trae solo lo que necesitas, muchas veces en segundos, de entre millones de filas.

Cómo

Escribes una consulta: SELECT las columnas, FROM una tabla, WHERE las filas cumplen una regla, y luego ordenas, cuentas o sumas.

Quién

En análisis de datos y análisis financiero sacan reportes con él. Los equipos de riesgos y de cumplimiento revisan operaciones. En análisis cuantitativo cargan precios antes de usar Python.

Pregunta, y responde sales millones de filas Austin, este trimestre $3,900 SELECT SUM(amount) FROM sales WHERE store = 'Austin'; entran millones de filas; sale una respuesta

Qué estás viendo: una base de datos de ventas a la izquierda y la respuesta a la derecha. El recuadro oscuro es la consulta de SQL que la pide: suma la columna amount (el monto), de la tabla sales (ventas), pero solo las filas donde la tienda es Austin. La respuesta es $3,900.

01 Míralo

Una base de datos es un conjunto de tablas.

Una base de datos guarda los datos en tablas. Cada fila es un registro, como una venta; cada columna es un tipo de dato, como la tienda o el monto. SQL es la forma de pedirlos, y cada pregunta es una consulta. Esta es la tabla de ventas de la cadena en un trimestre. Una real tiene millones de filas; las reglas son las mismas. Los nombres van en inglés, como en el trabajo: store es la tienda, month el mes y amount el monto.

storemonthamount
AustinJan1200
DenverJan900
MiamiJan1500
AustinFeb1400
DenverFeb700
MiamiFeb1600
AustinMar1300
DenverMar1100
MiamiMar1700

Qué estás viendo: la tabla sales (ventas): 9 filas (una por tienda por mes) y 3 columnas. Jan, Feb y Mar son enero, febrero y marzo. Los montos están en dólares.

SELECT, FROM y WHERE

Toda consulta empieza con SELECT (qué columnas) y FROM (qué tabla). * significa todas las columnas. WHERE deja solo las filas que pasan una prueba. El texto va entre comillas simples, como 'Austin', y un punto y coma termina la consulta. AND une dos pruebas: una fila debe pasar las dos. > significa mayor que y < significa menor que; un valor igual al número no pasa.

SELECT month, amount FROM sales WHERE store = 'Austin';Jan 1200 Feb 1400 Mar 1300
En este ejemplo
SELECT month, amount
Solo vuelven esas dos columnas: el mes y el monto.
WHERE store = 'Austin'
Deja 3 de las 9 filas.
Agrega AND amount > 1250
Solo febrero (1400) y marzo (1300) pasan las dos pruebas.

ORDER BY y LIMIT

ORDER BY ordena los resultados; agrega DESC para poner el más grande primero. LIMIT deja solo las primeras filas. Juntos responden "¿cuáles fueron nuestros 3 mejores?"

SELECT store, month, amount FROM sales ORDER BY amount DESC LIMIT 3;Miami Mar 1700 Miami Feb 1600 Miami Jan 1500
En este ejemplo
Los 3 mejores meses
Todos de Miami: 1700, 1600 y 1500.

Sumar: COUNT, SUM, AVG y GROUP BY

SQL puede resumir mientras trae los datos. COUNT(*) cuenta filas, SUM() suma una columna y AVG() saca el promedio. GROUP BY primero divide las filas en grupos, así obtienes una respuesta por grupo, como una fila de totales para cada tienda.

SELECT store, SUM(amount), AVG(amount) FROM sales GROUP BY store;Austin 3900 1300 Denver 2700 900 Miami 4800 1600
En este ejemplo
COUNT(*) FROM sales
9 filas.
SUM de Austin
1200 + 1400 + 1300 = 3900, la respuesta a la pregunta de tu gerente.
AVG de Austin
39003 = 1300 al mes.

Elige una pregunta para la tabla de ventas

Qué estás viendo: cuatro consultas sobre la misma tabla de ventas de 9 filas. Elige una para ver el SQL y la tabla que devuelve la base de datos.

JOIN: conecta dos tablas

Las bases de datos reparten los datos en muchas tablas para no escribir nada dos veces. JOIN las vuelve a juntar emparejando una columna que tienen en común.

SELECT stores.manager, SUM(sales.amount) FROM sales JOIN stores ON sales.store = stores.store GROUP BY stores.manager;Kim 2700 Lopez 4800 Rivera 3900
En este ejemplo
La tabla stores (tiendas)
Austin: gerente Rivera. Denver: Kim. Miami: Lopez.
Emparejadas por tienda
Cada venta encuentra al gerente de su tienda, así que las tiendas de Lopez vendieron 4800.

El orden de las cláusulas

SELECT → FROM → JOIN → WHERE → GROUP BY → ORDER BY → LIMIT

Puedes saltarte las que no necesites, pero las que uses deben ir en este orden.

02 Escúchalo

Dos minutos. Solo escucha.

Toca cualquier línea para saltar a ella.

03 Juégalo

Revisa la consulta.

Ocho preguntas sobre la misma tabla de ventas de 9 filas, que se muestra aquí. Un intento por pregunta.

Pregunta 1 de 8
Correctas0 de 0
storeJanFebMar
Austin120014001300
Denver9007001100
Miami150016001700

Qué estás viendo: los montos de ventas acomodados por tienda y mes (cada número es una fila de la tabla sales), luego una consulta y una pregunta sobre ella.

04 Paso a paso

La lógica, paso a paso.

Para convertir cualquier pregunta en una consulta, sigue cuatro pasos.

Paso 1: ¿Qué tabla?

FROM la tabla que tiene los datos
En este ejemplo
El trimestre de Austin
FROM sales.

Paso 2: ¿Qué filas?

WHERE deja las filas que pasan cada prueba
En este ejemplo
El filtro
WHERE store = 'Austin': 3 filas.

Paso 3: ¿Resumir?

SUM, COUNT o AVG, con GROUP BY para una respuesta por grupo
En este ejemplo
El total
SELECT SUM(amount): 3900.

Paso 4: Ordena y recorta

ORDER BY … DESC, luego LIMIT
En este ejemplo
Un solo número
No hay nada que ordenar: la respuesta es una fila.

Ejemplo resuelto: los meses flojos de Denver

La gerencia regional pregunta: "¿En qué meses vendió Denver menos de $1,000?" Estos son los datos:

  • La tabla: sales, con store, month y amount.
  • Dos pruebas: la tienda es Denver y el monto es menor que 1000.
  • Lo que se pide: los meses, del más chico al más grande.
SELECT month, amount FROM sales WHERE store = 'Denver' AND amount < 1000 ORDER BY amount;Feb 700 Jan 900
  1. Tabla. FROM sales.
  2. Filas. Denver tiene enero 900, febrero 700 y marzo 1100. Con AND, las dos pruebas deben pasar, así que marzo queda fuera.
  3. Orden. ORDER BY amount sin DESC pone el más chico primero.
  4. La respuesta. Febrero ($700) y enero ($900). Denver se recuperó en marzo ($1,100), y eso también vale la pena contárselo a la gerencia.
05 Conexión con la naturaleza

Un ave que consulta su memoria.

Cada otoño, el cascanueces americano, un ave de las montañas del oeste de Norteamérica, esconde decenas de miles de semillas de pino en miles de escondites pequeños repartidos por las laderas. Meses después, muchas veces bajo la nieve, regresa y desentierra los lugares correctos, usando rocas y árboles como señales.

Guardadomiles de escondites Recuperadosolo los que necesita

Qué estás viendo: una ilustración, no datos. Los puntos cafés son escondites de semillas repartidos en una ladera; los círculos verdes son los pocos que el cascanueces está desenterrando hoy.

Por qué se te queda. El ave no escarba toda la montaña; va directo a los escondites que quiere. Una buena consulta hace lo mismo: la base de datos lo guarda todo, y WHERE te lleva directo a las filas que necesitas.

06 Apuntes

La página que copiarías.

  • Base de datos = tablas. Fila = un registro; columna = un tipo de dato. Una consulta hace una pregunta en SQL.
  • SELECT columnas FROM tabla WHERE prueba. * = todas las columnas. Texto entre 'comillas simples'. AND = las dos pruebas.
  • Solo Austin: enero 1200, febrero 1400, marzo 1300.
  • ORDER BY amount DESC LIMIT 3: Miami 1700, 1600, 1500.
  • COUNT(*) = 9 filas. SUM de Austin = 3900. AVG = 39003 = 1300.
  • GROUP BY store: Austin 3900, Denver 2700, Miami 4800.
  • JOIN une dos tablas por una columna en común (tienda → gerente).
  • Orden: SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY, LIMIT.

Completa los espacios

1. Para dejar solo las filas que pasan una prueba, usa .
2. Para obtener un total por tienda, usa GROUP store.
3. SELECT COUNT(*) FROM sales devuelve en nuestra tabla.
4. Para ordenar del más grande al más chico, agrega después de ORDER BY amount.
07 En grupo

Busca a alguien o a tu grupo de estudio.

Base de datos humana

Escriban cada venta en una tarjeta. Una persona lee una consulta en voz alta; las demás levantan solo las tarjetas que cumplen y las suman.

De pregunta a consulta

Por turnos, hagan una pregunta sencilla sobre la tabla de ventas, como "¿Qué tienda vendió menos en febrero?" Las demás personas escriben el SQL.

Pruébenlo de verdad

Busquen un espacio gratis en línea para practicar SQL, peguen la tabla de ventas y corran las consultas de la lección. Luego inventen las suyas.

08 Por tu cuenta

Solo tú y tu dinero.

Esto se queda en este dispositivo. Nadie más lo ve.

Si tu cuenta de banco fuera una tabla, ¿qué consulta escribirías para ver a dónde se fue tu dinero el mes pasado?
Hojas de cálculo, Python o SQL: ¿cuál quieres dominar primero, y por qué?
Las empresas saben mucho gracias a datos como estos. ¿Qué datos tuyos no querrías que una empresa consultara?

09 Ponte a prueba

Preguntas tipo examen.

Escritas como las haría un examen universitario. Cada respuesta correcta al primer intento vale 10 xp.

En el trabajo: haces análisis de datos en la cadena de bicicletas

La dirección de finanzas se reúne mañana con la gerencia de cada tienda y te manda un mensaje: "¿Qué tienda tuvo las ventas totales más altas este trimestre, y cuál fue su promedio mensual?" Esto es lo que tienes:

  • La tabla: sales, con store, month y amount (las 9 filas de esta lección).
  • Lo que se pide: una fila, con la tienda, su total y su promedio.

Tu tarea: escribe una consulta que responda las dos cosas, y la respuesta que mandarías.

Ver una respuesta modelo
SELECT store, SUM(amount), AVG(amount) FROM sales GROUP BY store ORDER BY SUM(amount) DESC LIMIT 1;Miami 4800 1600

Para la dirección de finanzas: Miami encabezó el trimestre con $4,800 en ventas, un promedio de $1,600 al mes, y creció cada mes (1500, 1600, 1700). Austin quedó en segundo lugar con $3,900.

10 Hacia dónde va

Hacia dónde va.

Hojas de cálculoUnidad 17 · SUM y AVERAGE Python para finanzasUnidad 17 · tablas en código El estado de resultadosUnidad 12 · los ingresos son un SUM Estás aquí SQL para finanzas Currículum y LinkedInMuy pronto · Unidad 18

Qué estás viendo: un mapa de dónde encaja esta lección en el curso. Léelo de izquierda a derecha: las lecciones en las que se basa, esta lección en el centro y hacia dónde va.

  • Antes · Unidad 17Hojas de cálculo para finanzas
  • Antes · Unidad 17Python para finanzas
  • Antes · Unidad 12El estado de resultados
  • Estás aquíSQL para finanzas
  • Muy pronto · Unidad 18Currículum y LinkedIn para finanzas

Esa es la caja de herramientas de un analista: hojas de cálculo para modelar, Python para repetir y crecer, SQL para sacar los datos. La Unidad 18 lo convierte en un trabajo: tu currículum, tus contactos y la entrevista.

Repasa: Python para finanzas →Mapa del curso