Filtrar filas de una tabla según una condición (o varias) es una práctica muy habitual en análisis de datos. En SQL, puedes hacerlo con la cláusula where. En este tutorial, la usarás en distintos escenarios.
Utilizarás PostgreSQL como SGBD (sistema de gestión de bases de datos relacional), aunque la sintaxis apenas cambia al usar otros sistemas. Empezarás configurando una base de datos PostgreSQL y creando manualmente una tabla con datos de países. Una vez lista, ejecutarás varias consultas de filtrado con la cláusula WHERE.
Nota: Para seguir el tutorial, deberías conocer los fundamentos de SQL y PostgreSQL. Si no es tu caso, estos recursos pueden ayudarte:
Para seguir este tutorial, necesitas crear una tabla en PostgreSQL con información sobre países de todo el mundo. Usaremos esta tabla para mostrar cómo funciona la cláusula WHERE en diferentes casos.
Paso 1: crea una base de datos nueva
Abre pgAdmin (o tu interfaz de SQL preferida) y crea una nueva base de datos de PostgreSQL. Puedes llamarla, por ejemplo, world_data o como prefieras.
Paso 2: crea y rellena la tabla
Cuando la base de datos esté lista, abre una ventana de editor de consultas y ejecuta el siguiente código SQL. Creará una tabla llamada countries e insertará un conjunto de registros que cubren varios continentes, años de independencia y regiones:
La tabla incluye distinta información sobre unos 16 países de todo el mundo. Contiene las siguientes columnas:
code, clave primaria de la tabla, que indica el código universal del país
name, el nombre del país
continent, el continente al que pertenece
region, la zona geográfica donde se ubica
surface_area, la superficie del país
indep_year, el año en que obtuvo su independencia
local_name, el nombre local
gov_form, el tipo de gobierno vigente
capital, su capital
cap_long, la longitud de la capital
cap_lat, la latitud de la capital
Ahora sí, empecemos a filtrar registros con la cláusula WHERE.
Uso de la cláusula WHERE de SQL
En SQL, la cláusula WHERE te permite filtrar registros según valores tanto textuales como numéricos. Puedes compararlos con las siguientes operaciones de comparación:
= igual
<> y != distinto
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
Según el estándar SQL, se recomienda usar <> en lugar de !=.
Vamos a obtener ahora el registro del país cuyo code es AUS. La columna a comparar es code y el valor, AUS. La consulta sería:
Obtendrás los registros de un total de 3 países que lograron su independencia después de 1901. Ten en cuenta el comparador utilizado. La columna indep_year es de tipo entero. Por tanto, no se usan comillas en la comparación.
Puedes combinar varias condiciones en una cláusula WHERE con los conectores AND y OR. La siguiente consulta devuelve los países where continent = 'Asia' and indep_year > 1900:
SELECT*FROM countries WHERE continent ='Asia'AND indep_year >1901;Con la tecnología de
Obtienes información de tres países situados en el continente de Asia que lograron su independencia después de 1901. Observa que en la consulta anterior comparaste valores textuales y numéricos. Como ejercicio, prueba distintas combinaciones de AND y OR en la cláusula WHERE.
Nota: Cuando combines AND y OR, no olvides encerrar cada condición entre paréntesis. De lo contrario, SQL puede interpretar mal la precedencia de evaluación.
Con la siguiente consulta, obtienes un total de seis países.
SELECT*FROM countries WHERE(continent ='Europe'AND indep_year >1900)or(continent ='Asia'AND indep_year >1900);Con la tecnología de
También puedes encadenar más de dos condiciones en una cláusula WHERE:
SELECT*FROM countries WHERE continent ='Asia'OR indep_year >1900OR surface_area >652090;Con la tecnología de
Aquí obtienes un total de 15 países que están en Asia, o bien lograron su independencia después de 1901, o bien tienen una superficie mayor que 652090.
Convirtamos ahora la consulta en una variante con AND, que es más restrictiva:
SELECT*FROM countries WHERE continent ='Asia'AND indep_year >1901AND surface_area >652090;Con la tecnología de
En este caso obtendrás dos países.
También puedes utilizar subconsultas en una cláusula WHERE. Imagina que quieres recuperar el país con la mayor superficie, pero no conoces el valor máximo. En situaciones así, la siguiente consulta te saca del apuro:
SELECT*FROM countries WHERE surface_area in(SELECTMAX(surface_area)FROM countries);Con la tecnología de
Deberías obtener el registro de Russia.
Conclusión
¡Enhorabuena! Has completado este tutorial. Filtrar resultados de consulta según condiciones es una habilidad clave, y aquí has visto una introducción práctica. Si quieres llevar aún más lejos tus habilidades de SQL, echa un vistazo a nuestros cursos (enlace abajo).
Autor
Sayak Paul
Sayak trabaja en Hugging Face, donde codifica, escribe y habla. Su tiempo lo dedica principalmente a todo lo relacionado con la biblioteca de los Difusores. También es instructor de proyectos DataCamp y autor de muchos tutoriales DataCamp. Fuera del trabajo, le verás viendo Suits en Netflix por enésima vez.
SQL: preguntas frecuentes sobre la cláusula WHERE
¿Puedo usar columnas de texto y numéricas en una cláusula WHERE?⌄
Sí, puedes filtrar tanto por texto (p. ej., 'Asia') como por valores numéricos (p. ej., > 1901). Solo recuerda que los valores de texto deben ir entre comillas simples.
¿Hay diferencia entre <> y != en SQL?⌄
Ambos significan "distinto", pero <> es el operador estándar de SQL. Algunas bases de datos también admiten !=, pero es mejor usar <> por compatibilidad.
Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
Utiliza LIKE para filtrar registros SQL según coincidencias de cadenas específicas. Este tutorial te enseña a utilizar comodines, NOT, LOWER, UPPER y CASE WHEN con LIKE.
Conozca la cláusula SQL QUALIFY, un método de filtrado esencial aunque poco conocido en SQL. Comprender su sintaxis, usos y en qué se diferencia de otros métodos de filtrado SQL.
Filtrar filas de una tabla según una condición (o varias) es una práctica muy habitual en análisis de datos. En SQL, puedes hacerlo con la cláusula
where. En este tutorial, la usarás en distintos escenarios.Utilizarás PostgreSQL como SGBD (sistema de gestión de bases de datos relacional), aunque la sintaxis apenas cambia al usar otros sistemas. Empezarás configurando una base de datos PostgreSQL y creando manualmente una tabla con datos de países. Una vez lista, ejecutarás varias consultas de filtrado con la cláusula
WHERE.Nota: Para seguir el tutorial, deberías conocer los fundamentos de SQL y PostgreSQL. Si no es tu caso, estos recursos pueden ayudarte:
Crear una tabla en PostgreSQL
Para seguir este tutorial, necesitas crear una tabla en PostgreSQL con información sobre países de todo el mundo. Usaremos esta tabla para mostrar cómo funciona la cláusula
WHEREen diferentes casos.Paso 1: crea una base de datos nueva
Abre pgAdmin (o tu interfaz de SQL preferida) y crea una nueva base de datos de PostgreSQL. Puedes llamarla, por ejemplo,
world_datao como prefieras.Paso 2: crea y rellena la tabla
Cuando la base de datos esté lista, abre una ventana de editor de consultas y ejecuta el siguiente código SQL. Creará una tabla llamada
countriese insertará un conjunto de registros que cubren varios continentes, años de independencia y regiones:La tabla incluye distinta información sobre unos 16 países de todo el mundo. Contiene las siguientes columnas:
code, clave primaria de la tabla, que indica el código universal del paísname, el nombre del paíscontinent, el continente al que perteneceregion, la zona geográfica donde se ubicasurface_area, la superficie del paísindep_year, el año en que obtuvo su independencialocal_name, el nombre localgov_form, el tipo de gobierno vigentecapital, su capitalcap_long, la longitud de la capitalcap_lat, la latitud de la capitalAhora sí, empecemos a filtrar registros con la cláusula
WHERE.Uso de la cláusula WHERE de SQL
En SQL, la cláusula
WHEREte permite filtrar registros según valores tanto textuales como numéricos. Puedes compararlos con las siguientes operaciones de comparación:=igual<>y!=distinto<menor que>mayor que<=menor o igual que>=mayor o igual queSegún el estándar SQL, se recomienda usar
<>en lugar de!=.Vamos a obtener ahora el registro del país cuyo
codeesAUS. La columna a comparar escodey el valor,AUS. La consulta sería:Y obtienes:
Fíjate en un par de detalles:
La cláusula
WHEREsiempre va después deFROM.En SQL, las cadenas de texto se escriben entre comillas simples.
Veamos ahora una comparación numérica. Recuperemos los países que obtuvieron su independencia (
indep_year) después de1901:Obtendrás los registros de un total de 3 países que lograron su independencia después de
1901. Ten en cuenta el comparador utilizado. La columnaindep_yeares de tipo entero. Por tanto, no se usan comillas en la comparación.Puedes combinar varias condiciones en una cláusula
WHEREcon los conectoresANDyOR. La siguiente consulta devuelve los paíseswhere continent = 'Asia' and indep_year > 1900:Obtienes información de tres países situados en el continente de
Asiaque lograron su independencia después de1901. Observa que en la consulta anterior comparaste valores textuales y numéricos. Como ejercicio, prueba distintas combinaciones deANDyORen la cláusulaWHERE.Nota: Cuando combines
ANDyOR, no olvides encerrar cada condición entre paréntesis. De lo contrario, SQL puede interpretar mal la precedencia de evaluación.Con la siguiente consulta, obtienes un total de seis países.
También puedes encadenar más de dos condiciones en una cláusula
WHERE:Aquí obtienes un total de 15 países que están en
Asia, o bien lograron su independencia después de1901, o bien tienen una superficie mayor que652090.Convirtamos ahora la consulta en una variante con
AND, que es más restrictiva:En este caso obtendrás dos países.
También puedes utilizar subconsultas en una cláusula
WHERE. Imagina que quieres recuperar el país con la mayor superficie, pero no conoces el valor máximo. En situaciones así, la siguiente consulta te saca del apuro:Deberías obtener el registro de
Russia.Conclusión
¡Enhorabuena! Has completado este tutorial. Filtrar resultados de consulta según condiciones es una habilidad clave, y aquí has visto una introducción práctica. Si quieres llevar aún más lejos tus habilidades de SQL, echa un vistazo a nuestros cursos (enlace abajo).