--¿Cuánto es 25 * 8?
-- Ejercicios de consulta sobre la BD [Link]
-- *********************
-- Con la tabla stations
-- *********************
select (25 * 8);
-- Pero ponle el nombre al campo, que diga «Cálculo»
select (25 * 8) AS "Cálculo";
-- Muestra todos los registros de la tabla stations
select * from stations;
-- Muestra el id y station de la tabla stations
select id, station from stations;
-- Muestra el registro con id = 3
select id, station from stations where id = 3;
-- Muestra los registros con un id entre 5 y 8
select id, station from stations where id between 5 and 8;
-- Muestra los registros con el id 8, 25, 60 y 130
select id, station from stations where id in (8, 25, 60, 130);
-- Muestra los registros cuyo id no esté entre 4 y 140
select id, station from stations where id not between 4 and 140;
-- ¿Y cuales serían los id, station y municipios para las station que empiezan por L?
select id, station, municipality from stations where station like 'L%';
-- ¿Y los que empiezan por L, seguidos de cualquier caracter y luego una n?
select id, station, municipality from stations where station like 'L_n%';
-- Muestra las estaciones ordenadas por municipality, de forma descendente
select station from stations order by municipality DESC;
-- Y que ponga «Ayuntamiento» en vez de «municipality» en el encabezado
select station, municipality AS "Ayuntamiento" from stations order by municipality
DESC;
-- Muestra sólo 5 registros de la tabla
select station, municipality AS "Ayuntamiento" from stations order by municipality
DESC limit 5;
-- ¿Cuales serán los 5 registros con el mayor valor de id?
select id, station from stations order by id ASC limit 5;
-- ¿Cual es el máximo valor de id?
select max(id) from stations;
-- ¿Y el mínimo valor de lat (latitud)?
select min(lat) from stations;
-- ¿Cual es la station que está más al sur?
-- Latitud -> menor valor
select min(lat) from stations;
-- ¿Cual es el valor medio de latitud?
select avg(lat) from stations;
-- Muestra una tabla con municipality y el número de stations en cada una
select municipality, count(station) from stations group by municipality;
-- Muestra la tabla anterior, pero ordenada de mayor a menor cantidad de estaciones
select municipality, count(station) numero_total from stations group by municipality
order by numero_total DESC;
-- Qué municipio es el que tiene mayor número de estaciones?
select municipality, count(station) numero_total from stations group by municipality
order by numero_total DESC limit 1;
-- Muestra los municipios que al menos tienen 25 estaciones
select municipality, count(station) numero_total from stations group by municipality
having numero_total > 25;
-- Muestra los municipios, y la cantidad de estaciones. Pero sólo los municipios que
su nombre empieza por B
select municipality, count(station) numero_total from stations where municipality like
'B%' group by municipality;
-- Muestra los municipios con la cantidad de estaciones que tienen. Pero sólo los
municipio cuyo nombre empieza por B y las estaciones que empiezan por L
select municipality, count(station) numero_total from stations where municipality like
'B%' and station like 'L%' group by municipality;
-- Muestrame una tabla, con un solo valor que se llame «Texto» y que diga «El
municipio $municipality tiene $stations estaciones de alquiler». Sustituyendo
$municipality y $stations por los valores de los campos correspondientes.
select 'El municipio ' || municipality || ' tiene ' || count(station) || '
estaciones de alquiler' from stations group by municipality;
-- *********************
-- Con la tabla trips
-- *********************
-- ¿Cual fue el viaje más largo?
-- El viaje con la duración más larga (no será lo mismo que el id del viaje más largo)
select max(duration) from trips;
-- ¿Y el más corto?
select min(duration) from trips;
-- ¿Cuantos viajes se han realizado?
select count(id) from trips;
-- ¿Cual es la media de la duración de los viajes?
select avg(duration) from trips;
-- Y si tienes en cuenta sólo los viajes reales (supongamos que son los que duran más
de 1 minuto)
select avg(duration) from trips where duration > 60;
-- Y la media, de los viajes reales, pero en minutos, sin decimales y con encabezado
"Duración"
select round(avg(duration)) as "Duración" from trips where duration > 60;
-- ¿Cuantos viajes ha realizado la bicicleta B00550?
select count(id) from trips where bike_number = 'B00550';
-- ¿Cuántas bicicletas hay registradas?
select count(DISTINCT bike_number) from trips;
-- ¿Puedes mostrarme una tabla con las bicicletas y el número de viajes que han
realizado?
select bike_number, count(id) from trips group by bike_number;
-- ¿Puedes mostrarme una tabla con las 10 bicicletas con más viajes nulos realizados
(los de menos de 60 segundos?
select bike_number, count(id) from trips where duration < 60 group by bike_number
order by count(id) DESC limit 10;
-- ¿Cual es la bicicleta que más se ha usado?
select bike_number, count(id) from trips group by bike_number order by count(id) DESC
limit 1;
-- ¿Qué bicicletas han sido usadas en más de 2.000 viajes?
select bike_number, count(id) AS viajes from trips group by bike_number having viajes
> 2000;
-- ¿Qué bicicletas han sido usadas en más de 2.000 viajes de al menos 3 minutos?
select bike_number, count(id) AS viajes from trips where duration > 180 group by
bike_number having viajes > 2000;
-- ¿Quienes usan más el servicio, los hombres o las mujeres?
select gender, count(id) from trips group by gender;
select gender, count(id) from trips where gender <> '' group by gender;
-- ¿Cual es la media de los viajes de hombres mayores de 30 años
select avg(duration) from trips where gender = 'Male' and birth_date is not null and
(2022 - birth_date) > 30;