Volver a la lista de artículos Artículos
Lectura de 10 minutos

¿SQL en Google Sheets? Sí, se puede.

¿Sabías que puedes escribir consultas tipo SQL en las hojas de cálculo de Google? Esta función es increíblemente potente y versátil, y puede sustituir a la mayoría de las funcionalidades que ofrecen las tablas dinámicas de Excel.

Lee nuestro artículo para descubrir cómo puedes utilizar fácilmente la función QUERY para trabajar de forma eficaz con tus datos de Google Sheets.

Las bases de datos relacionales comparten muchas características con las hojas de cálculo. Cuando explicamos qué son las bases de datos, solemos decir que son un poco como las hojas de cálculo, excepto que nos dan más control sobre grandes cantidades de datos.

Para comunicarnos con las bases de datos, solemos utilizar SQL, que es una forma eficaz de recuperar datos de una base de datos. (Si nunca has oído hablar de SQL, empieza por leer nuestro breve artículo La guía completa para principiantes de Principios básicos de SQL).

SQL es un lenguaje de consulta universal. Existe desde los años 70 y sigue siendo muy popular. Saber SQL aumenta tus posibilidades de tener una carrera estable en el sector de las tecnologías de la información, ya que muchos empleadores buscan estos conocimientos. Si quieres descubrir las ventajas de utilizar SQL, consulta 5 grandes ventajas de aprender SQL.

Ahora, volvamos a las hojas de cálculo. Las hojas de cálculo son importantes porque los datos no siempre se almacenan en una base de datos. Muchas empresas utilizan archivos CSV u hojas de cálculo para gestionar su información. Estos pueden abrirse en aplicaciones como Google Sheets o Microsoft Excel, pero estos archivos no funcionan con bases de datos como tales.

¿Significa eso que no puedes usar SQL cuando trabajas con datos en hojas de cálculo? En absoluto. Google Sheets ofrece una opción de QUERY que te permite escribir instrucciones similares a las de SQL y recuperar datos de una forma parecida a la de SQL. De este modo, puedes utilizar la potencia de SQL aunque no tengas una base de datos con la que trabajar.

No hace falta decir que Google Sheets está disponible de forma gratuita. El programa puede abrir una amplia gama de formatos de archivo, incluidos los archivos CSV y Excel.

Dado que SQL es un lenguaje de consulta de datos bien diseñado y estandarizado, pensar en términos de SQL cuando trabajas en Google Sheets puede ayudar a tus análisis. Para obtener más información al respecto, consulta el artículo Cómo empezar a pensar en SQL, del asesor técnico de NoSide Jeffrey Edison.

En este artículo, te mostraremos algunos ejemplos básicos de cómo trabajar con SQL en Google Sheets. Se recomienda tener algún conocimiento de SQL, pero no es necesario para entender los conceptos que presentaremos. Deberías ser capaz de seguir los ejemplos incluso si nunca has visto una sentencia SQL antes. Sin embargo, si quieres aprender SQL, echa un vistazo al curso LearnSQL.es's Principios básicos de SQL, que no asume ninguna experiencia previa y te convertirá en un usuario intermedio de SQL.

Muestreo de datos de Google Sheets

En este artículo, trabajaremos con una sencilla hoja de cálculo de Google Sheets que contiene información básica sobre algunos hoteles de Indonesia. Hemos utilizado hoteles imaginarios, así que no intentes encontrarlos.

Muestreo de datos de Google Sheets

Puedes ver la hoja de cálculo y todas las consultas que presentamos en este artículo en nuestra hoja de Google "Hotel Query". Hay una hoja separada para cada consulta discutida en este artículo.

La tabla Hotels tabla contiene las siguientes columnas:

  • Id - El identificador único de ese hotel.
  • Nombre - El nombre del hotel.
  • Estrellas - El número de estrellas otorgadas al hotel: 3, 4 o 5.
  • Valoración - La valoración media del hotel por parte de sus huéspedes, en una escala de 0 a 10.
  • TwinRoomPrice - El precio base de una habitación doble para una noche.
  • Ciudad - La ciudad donde se encuentra el hotel: Bandung, Denpasar o Surabaya.

Aunque los hoteles son imaginarios, las ciudades son reales. Busca en Google Bandung, Denpasar y Surabaya: ¡son destinos turísticos indonesios realmente buenos!

Muy bien. Ahora que conocemos los datos, vamos a aprender a utilizar SQL en Sheets.

Comprender la función de consulta

Para escribir instrucciones de tipo SQL en Google Sheets, sólo necesitaremos una única función llamada QUERY. El formato de la función no es especialmente difícil:

=QUERY(data, query, [headers])

Como puedes ver, la función QUERY toma tres parámetros, de los cuales sólo dos son necesarios. Veamos esos parámetros:

  • data - El rango de celdas que contiene los datos (en este caso, el rango es toda la Hotels tabla).
  • query - La consulta tipo SQL a realizar.
  • headers - El número de filas que contienen información de cabecera. Estas suelen estar en la parte superior de los datos, es decir, los nombres de las columnas. Este argumento es opcional. Si no lo proporcionas, Google Sheets intentará averiguarlo. La aplicación es bastante buena en esto, por lo que el parámetro no suele ser necesario. Lo omitiremos en este artículo.

No te preocupes si estos parámetros te parecen un poco imprecisos; en los próximos párrafos te proporcionaremos algunos ejemplos fáciles de seguir.

Primera consulta en Google Sheets

Empecemos con el ejemplo más sencillo posible. Simplemente seleccionaremos todos los datos de nuestra Hotels tabla.

Primero escogeremos una celda libre a la derecha de la Hotels tabla en Google Sheets y empezaremos a escribir nuestra consulta de la siguiente manera. (No pulses todavía Intro).

=QUERY(A1:F23,

El primer parámetro, data, es el rango de celdas. En este caso, proporcionamos A1:F23, que corresponde al rango de la Hotels tabla, como se muestra en la imagen siguiente.

Tabla de hoteles

Ahora, después de la coma, debemos proporcionar nuestra consulta tipo SQL entre comillas. El nombre oficial del lenguaje de consulta utilizado en Google Sheets es Google Visualization API Query Language. Para seleccionar todos los datos, necesitamos el siguiente código:

=QUERY(A1:F23,"SELECT *")

Ten en cuenta que es posible que tengas que sustituir la coma que separa los parámetros por un punto y coma u otro carácter, según la configuración de Google Sheets.

En Google Sheets, SELECT * significa "seleccionar todo". Fíjate en la similitud de esta instrucción con su equivalente en SQL, SELECT * FROM Hotels. En Google Sheets, omitimos la cláusula FROM porque el rango de datos se especifica en el primer argumento.

Si pulsas ahora Enter, Google Sheets convertirá la consulta en un conjunto de resultados, como se muestra en la imagen siguiente:

SELECT * FROM Hoteles

La tabla que puedes ver es esencialmente idéntica a la tabla original. Este es el comportamiento esperado. Nuestra consulta era SELECT *, lo que significa "mostrar todo de los datos originales".

Muy bien. ¡Acabamos de escribir nuestra primera consulta en Google Sheets!

Trabajar con columnas y condiciones

Ahora veamos algunos ejemplos más avanzados. Supongamos que ahora queremos mostrar sólo tres columnas: Nombre, Valoración y Precio de la habitación doble. Además, sólo queremos ver los hoteles de tres estrellas.

En este caso, tendremos que hacer referencia a columnas individuales. La consulta tendrá el siguiente aspecto:

=QUERY(A1:F23, "SELECT B, D, E WHERE C=3")

Como puedes ver, en lugar de utilizar los nombres de las columnas de nuestra tabla (como Nombre, Estrellas o Clasificación), utilizamos las letras de las columnas que nos proporciona Google Sheets. La columna Nombre se encuentra en la columna B de la hoja de cálculo, por lo que utilizamos SELECT B para mostrarla en la tabla resultante. Del mismo modo, utilizamos la letra D para seleccionar la columna Rating y la letra E para seleccionar la columna TwinRoomPrice. Las columnas también están separadas con comas, pero no hay ninguna coma después de la última columna que queremos seleccionar.

Después de seleccionar las columnas, añadimos WHERE C=3. C se refiere a la columna Stars, por lo que la instrucción significa básicamente que hayque seleccionar sólo hoteles de tres estrellas (es decir, donde la columna C sea igual a 3).

La siguiente captura de pantalla muestra cómo la consulta se refiere a las columnas individuales:

seleccionar sólo hoteles de tres estrellas

Cuando pulsamos Intro, Google Sheets produce una tabla ordenada que contiene tres columnas con toda la información de los hoteles de tres estrellas: Nombre, Clasificación y Precio de la habitación doble.

seleccionar sólo hoteles de tres estrellas

Ten en cuenta que la consulta SQL equivalente sería muy similar:

SELECT Name, Rating, TwinRoomPrice
FROM Hotels
WHERE Stars=3;

Añadir más condiciones y ordenar las filas

En nuestro siguiente ejemplo, queremos encontrar todos los hoteles de Bandung que tengan una calificación superior a 7,0. También queremos ver los hoteles resultantes ordenados de menor a mayor precio.

Para satisfacer estos requisitos, tendremos que añadir dos nuevas partes. Tendremos que unir varias condiciones con la palabra clave AND, y tendremos que ordenar las filas con una nueva cláusula llamada ORDER BY. Esta es la consulta:

=QUERY(A1:F23, "SELECT * WHERE D > 7.0 AND F='Bandung' ORDER BY E")

Mire la cláusula WHERE de la consulta anterior. La columna D contiene las valoraciones de los hoteles. En este caso, queremos que la valoración sea superior a 7,0. También queremos introducir otra condición: los hoteles deben estar situados en Bandung. Para introducir más de una condición, utilizamos la palabra clave AND.

La columna F contiene las ciudades de los hoteles, así que escribimos F='Bandung' para obtener los hoteles de Bandung. Tenga en cuenta que los valores de texto deben ir rodeados de comillas simples (a diferencia de los números). Si nos olvidamos de las comillas, obtendremos un error.

Por último, añadimos el siguiente fragmento de código: ORDER BY E. La cláusula ORDER BY se utiliza para ordenar las filas resultantes. En este caso, queremos ordenar las filas por TwinRoomPrice, que está en la columna E. Por defecto, las filas se ordenarán en orden ascendente.

Cuando pulsamos el botón Enter, podemos ver la tabla resultante. Efectivamente, sólo podemos ver los hoteles de Bandung con una valoración superior a 7,0. Observe que todas las filas están ordenadas por precio.

hoteles de Bandung con una calificación superior a 7,0

Contar filas agrupadas

Por último, pasaremos a dos ejemplos que puede utilizar para obtener resultados similares a los de las tablas dinámicas de Excel.

Primero, queremos contar el número de hoteles en cada ciudad. Para ello, utilizaremos la siguiente consulta:

=QUERY(A1:F23,"SELECT F, COUNT(A) GROUP BY F ")

La consulta contiene dos nuevos elementos: COUNT(A) y GROUP BY F. Empecemos por este último.

GROUP BY F significa que queremos dividir todas las filas en grupos basados en los valores de la columna F (que es Ciudad). Realizamos la agrupación (también conocida como "agregación") para poder mostrar cada ciudad (SELECT F) junto con el número de hoteles de esa ciudad (COUNT(A)).

COUNT(A) cuenta el número de filas en el grupo dado. Si no se proporciona la cláusula GROUP BY, contará todas las filas. Ponemos la columna A(Id) dentro del paréntesis para que se cuenten todos los hoteles únicos. Elegimos Id por convención; podría utilizar otra columna, como B (el nombre del hotel), pero las columnas ID suelen ser preferidas porque siempre contienen valores únicos.

Hablamos de las funciones agregadas (como COUNT()) y de la cláusula GROUP BY en nuestro curso Principios básicos de SQL . Revísalo si quieres entender cómo funcionan estas funciones de SQL.

Cuando pulsamos Enter, podemos ver la tabla resultante con el número de hoteles de cada ciudad:

número de hoteles en cada ciudad

La consulta SQL equivalente sería así:

SELECT City, COUNT(Id)
FROM Hotels
GROUP BY City;

Búsqueda de promedios

En el último ejemplo, calcularemos la calificación media y el precio medio de los hoteles de cada categoría (tres estrellas, cuatro estrellas y cinco estrellas). Necesitaremos la siguiente consulta:

=QUERY(A1:F23, "SELECT C, AVG(D), AVG(E) GROUP BY C")

Utilizamos GROUP BY C para agrupar todos los hoteles por la columna Estrellas. También introducimos AVG(D) y AVG(E), que se utilizan para calcular los valores medios de las columnas D(Rating) y E (TwinRoomPrice), respectivamente. Cuando pulsamos Enter, deberíamos ver esta tabla de resultados:

Encontrar promedios

La instrucción SQL equivalente tendría el siguiente aspecto:

SELECT Stars, AVG(Rating), AVG(TwinRoomPrice)
FROM Hotels
GROUP BY Stars;

¿Consultas SQL(ish) en Google Sheets? Sin duda.

En este artículo, he explicado cómo utilizar un lenguaje de consulta similar a SQL en Google Sheets. Ahora deberías tener un conocimiento sólido de la función QUERY en Sheets. También puedes ver la similitud del lenguaje de consulta de Google con el SQL estándar.

Si te ha gustado aprender esto y tienes curiosidad por el SQL, consulta el curso LearnSQL.es's Principios básicos de SQL. Hay una prueba gratuita para ayudarte a empezar.

Sin duda, el lenguaje de consulta de Google es más completo de lo que hemos podido mostrar en este artículo introductorio. Si estás interesado en utilizar sus otras funciones, echa un vistazo a la documentación oficial de Google Visualization API Query Language.