SQL · STATION: nombres y patrones (2)

SQL

SQL · STATION: nombres y patrones (2)

Segunda tanda sobre STATION: negaciones con NOT LIKE, combinar condiciones de principio y fin, y extraer la primera y la última letra de cada nombre.

Sep 11, 2026

6 min

HomeBlogsSQL · STATION: nombres y patrones (2)

Esta serie mantiene la mente fresca resolviendo, uno a uno, los ejercicios de HackerRank. Cada entrada toma un tema concreto y lo agota; todas las consultas están en MySQL salvo donde se indique.

Te invito a intentar cada ejercicio antes de leer la solución.

Continúan los patrones sobre STATION, ahora negando condiciones y combinándolas.

STATION

The STATION table is described as follows:

ColumnaTipo
IDNUMBER
CITYVARCHAR2
STATEVARCHAR2
LAT_NNUMBER
LONG_WNUMBER

where LAT_N is the northern latitude and LONG_W is the western longitude.

Weather Observation Station 9

Query the list of CITY names from STATION that do not start with vowels. Your result cannot contain duplicates.

Teniendo la función LEFT es mucho más fácil ahora poder resolver este tipo de ejercicios. Ahora, usando el operador NOT, filtraremos las ciudades que no tengan vocales al inicio.

SQL
SELECT DISTINCT CITY FROM STATION
WHERE LEFT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u');
CITY
Baileyville
Bainbridge
Baker
Baldwin
Barrigada
Bass Harbor
Baton Rouge
Bayville
Beaufort

Solución

... (resultado truncado, hay más filas)

Weather Observation Station 10

Query the list of CITY names from STATION that do not end with vowels. Your result cannot contain duplicates.

Solución

Solo debemos ahora hacerlo de forma invertida usando RIGHT

SQL
SELECT DISTINCT CITY FROM STATION
WHERE RIGHT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u');
CITY
Kissee Mills
Loma Mar
Sandy Hook
Tipton
Arlington
Turner
Slidell
Negreet
Chignik Lagoon
Hanna City

... (resultado truncado, hay más filas)

Weather Observation Station 11

Query the list of CITY names from STATION that either do not start with vowels or do not end with vowels. Your result cannot contain duplicates.

Solución

Ahora solamente debemos reutilizar la query anterior, en donde buscábamos palabras que coincidieran con una vocal en la primera letra Y coincidieran con la última letra con una vocal. Ahora, en vez de que ambas condiciones se den, solo con 1 basta, pero en este caso no deben tener ninguna vocal.

SQL
SELECT DISTINCT CITY FROM STATION
WHERE RIGHT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u')
OR LEFT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u');
CITY
Addison
Agency
Alanson
Albany
Albion
Algonac
Allerton
Alton
Andover
Anthony

... (resultado truncado, hay más filas)

Weather Observation Station 12

Query the list of CITY names from STATION that do not start with vowels and do not end with vowels. Your result cannot contain duplicates.

Ahora si podemos usar AND en vez de OR

SQL
SELECT DISTINCT CITY FROM STATION
WHERE RIGHT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u')
OR LEFT(CITY, 1) NOT IN ('a', 'e', 'i', 'o', 'u');
CITY
Baker
Baldwin
Bass Harbor
Beaufort
Beaver Island
Benedict
Bennington
Berryton
Beverly
Bison
Blue River
Bowdon
Bowdon Junction
Bridgeport
Bridgton
Brighton

Solución

... (resultado truncado, hay más filas)

Weather Observation Station 13

Query the sum of Northern Latitudes (LAT_N) from STATION having values greater than 38.7880 and less than 137.2345. Truncate your answer to 4 decimal places.

Solución

En este ejercicio nos piden sumar todas las latitudes del norte (LAT_N) que cumplan una condición, y luego truncar el resultado a 4 decimales. El orden correcto es: primero filtrar las latitudes que sean mayores a 38.7880 y menores a 137.2345 (usando los operadores > y <), y luego sumar esos valores con SUM. Finalmente, aplicamos TRUNCATE al total de la suma para quedarnos con 4 decimales sin redondear.

SQL
SELECT TRUNCATE(SUM(LAT_N), 4)
FROM STATION
WHERE LAT_N > 38.7880 AND LAT_N < 137.2345;

Para que te des una idea de porque no volvemos a usar TRUNCATE aquí es por el orden de ejecución de la query

El orden lógico es el siguiente:

  1. FROM → se identifica la tabla y se cargan las filas.

  2. WHERE → se filtran las filas según la condición.

  3. GROUP BY → se agrupan las filas (si aplica).

  4. HAVING → se filtran los grupos (si aplica).

  5. SELECT → se calculan las expresiones y se crean los alias.

  6. ORDER BY → se ordena el resultado.

  7. LIMIT → se limita el número de filas

Weather Observation Station 14

Query the greatest value of the Northern Latitudes (LAT_N) from STATION that is less than 137.2345. Truncate your answer to 4 decimal places.

Aplicando lo visto anteriormente en el ejercicio Weather Observation Station 14. Podremos resolver esto de manera muy sencilla.

Solución

SQL
SELECT TRUNCATE(MAX(LAT_N), 4) FROM Station WHERE LAT_N < 137.2345;

Weather Observation Station 15

Query the Western Longitude (LONG_W) for the largest Northern Latitude (LAT_N) in STATION that is less than 137.2345. Round your answer to 4 decimal places.

Solución

Para obtener el valor máximo sin usar MAX, ordenamos la columna LAT_N de forma descendente (de mayor a menor) y limitamos el resultado a una sola fila con LIMIT 1. De esa fila tomamos el valor de LONG_W y lo redondeamos a 4 decimales.

SQL
SELECT ROUND(LONG_W, 4) FROM Station
WHERE LAT_N < 137.2345 ORDER BY LAT_N DESC LIMIT 1;

Weather Observation Station 16

Query the smallest Northern Latitude (LAT_N) from STATION that is greater than 38.7780. Round your answer to 4 decimal places.

Solución

Así como tenemos MAX para obtener el valor máximo, contamos con la función MIN para obtener el valor mínimo entre todos los valores de LAT_N. En este caso, filtramos las latitudes mayores a 38.7780 con WHERE y luego aplicamos MIN para quedarnos con la más pequeña de ellas. Finalmente, redondeamos el resultado a 4 decimales.

SQL
SELECT ROUND(MIN(LAT_N), 4) FROM Station WHERE LAT_N > 38.7780;

Weather Observation Station 17

Query the Western Longitude (LONG_W) where the smallest Northern Latitude (LAT_N) in STATION is greater than 38.7780. Round your answer to 4 decimal places.

Un poco de practica afianzando lo visto en Weather Observation Station 15

Solución

SQL
SELECT ROUND(LONG_W, 4) FROM Station
WHERE LAT_N > 38.7780 ORDER BY LAT_N LIMIT 1;