Aprende SQL

Expresiones en SQL: Cálculos y manipulaciones

SQL no solo recupera datos, también permite hacer cálculos, transformar texto y crear lógica condicional directamente en las consultas.

Aritmética
year2015
2025 - year
antiguedad10
Concatenación
titleMinecraft
year2011
title || ' (' || year || ')'
infoMinecraft (2011)
CASE WHEN
year1986
< 2000 → 'Clásico'
< 2015 → 'Moderno'
ELSE → 'Reciente'
categoriaClásico

Operaciones aritméticas

Puedes usar operadores matemáticos en el SELECT:

SELECT title, 2025 - year AS antiguedad
FROM videogames;

Concatenación de texto

En SQLite, se usa || para unir cadenas de texto:

SELECT title || ' (' || year || ')' AS info
FROM videogames;

CASE WHEN: Lógica condicional

CASE WHEN permite crear columnas con valores basados en condiciones, similar a un if/else:

SELECT title,
  CASE
    WHEN year < 2000 THEN 'Clásico'
    WHEN year < 2015 THEN 'Moderno'
    ELSE 'Reciente'
  END AS categoria
FROM videogames;

Alias con AS

La palabra clave AS te permite dar un nombre personalizado a una columna calculada. Ya lo hemos visto en los ejemplos anteriores.

Funciones de texto

SQL incluye funciones para transformar cadenas de texto directamente en tus consultas. Estas son las más utilizadas en SQLite:

FunciónDescripciónEjemplo
UPPER(texto)Convierte a mayúsculasUPPER('hola')'HOLA'
LOWER(texto)Convierte a minúsculasLOWER('HOLA')'hola'
LENGTH(texto)Devuelve el número de caracteresLENGTH('Zelda')5
SUBSTR(texto, inicio, longitud)Extrae una parte del textoSUBSTR('Minecraft', 1, 4)'Mine'
TRIM(texto)Elimina espacios al inicio y al finalTRIM(' hola ')'hola'
REPLACE(texto, buscar, reemplazo)Reemplaza ocurrenciasREPLACE('2015-03-20', '-', '/')'2015/03/20'

Por ejemplo, para mostrar los títulos en mayúsculas:

SELECT UPPER(title) AS titulo_mayusculas FROM videogames;

Funciones numéricas

También puedes aplicar funciones matemáticas a valores numéricos:

FunciónDescripciónEjemplo
ROUND(número, decimales)Redondea al número de decimales indicadoROUND(3.14159, 2)3.14
ABS(número)Devuelve el valor absolutoABS(-42)42

ROUND es especialmente útil cuando haces divisiones o promedios y quieres resultados legibles:

SELECT title, ROUND(playtime_hours * 1.0 / 12, 1) AS horas_por_mes
FROM videogames;

Ten en cuenta que MIN y MAX también pueden usarse como funciones escalares (no solo como funciones de agregación). Por ejemplo, MIN(a, b) devuelve el menor de dos valores en una expresión.

Nuestra tabla

Nombre de la Tabla: videogames
idtitledeveloperyearplaytime_hours
1The Legend of ZeldaNintendo198620
2Super Mario Bros.Nintendo198510
3Final Fantasy VIISquare Enix199740
4The Witcher 3CD Projekt Red2015100
5MinecraftMojang Studios20119999
6Grand Theft Auto VRockstar Games201380
7Dark SoulsFromSoftware201160
8Portal 2Valve20118
9Red Dead Redemption 2Rockstar Games201870
10The Last of UsNaughty Dog201315
11Halo: Combat EvolvedBungie200110
12God of WarSanta Monica Studio201825

Ejercicios