Solución del reto
SELECT *
FROM platzi.alumnos
WHERE (EXTRACT(YEAR FROM fecha_incorporacion)) = 2018
AND (EXTRACT(MONTH FROM fecha_incorporacion)) = 05;
Introducción a SQL
Breve historia de SQL
Álgebra relacional
Instalación de la BD de ejemplo
Qué es una proyección (SELECT)
Origen (FROM)
Productos cartesianos (JOIN)
Selección (WHERE)
Ordenamiento (ORDER BY)
Agregación y limitantes (GROUP BY y LIMIT)
Ejercitando tu SQL
El primero
El segundo más alto
Seleccionar de un set de opciones
En mis tiempos
Seleccionar por año
Duplicados
Selectores de rango
Eres lo máximo
Egoísta (selfish)
Resolviendo diferencias
Todas las uniones
Triangulando
Generando rangos
Regularizando expresiones
Conceptos de SQL Avanzado
Bases de datos distribuidas
Queries distribuídos
Sharding
Window functions
Particiones y agregación
El futuro de SQL
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Israel Vázquez Morales
Aportes 461
Preguntas 16
Solución del reto
SELECT *
FROM platzi.alumnos
WHERE (EXTRACT(YEAR FROM fecha_incorporacion)) = 2018
AND (EXTRACT(MONTH FROM fecha_incorporacion)) = 05;
Mis soluciones:
SELECT *
FROM platzi.alumnos
WHERE (DATE_PART('YEAR', fecha_incorporacion)) = 2018
AND (DATE_PART('MONTH', fecha_incorporacion)) = 05 ;
SELECT *
FROM platzi.alumnos
WHERE fecha_incorporacion like '2018 -05 %';
Dejo este aporte para l@s compañer@s que están comenzando y aún no se encuentran trabajando en la industria.
Lo que está explicando este profesor es sumamente importante, sus ejemplos tal cual te va a llegar en el requerimiento de parte de tus lideres.
(en caso de querer seguir el path de data science) Por lo general luego de las reuniones de negocio o el cliente en cuestión, va a necesitar “la cantidad de usuarios que se registraron en el ultimo trimestre, pero que tengan mas de 3 interacciones diarias con la plataforma y tengan entre 24 y 28 años”
Entonces tu capacidad de responder estas preguntas vía querys utilizando SQL va a hacer que tu perfil profesional se eleve. Recuerda siempre preguntar como se armaron las tablas de donde se están consultando los datos, ya que sumamente importante entender a la perfección cada feature para dar el valor que tu cliente necesita.
Te deseo lo mejor !
pd: yo estoy como ds y estoy repasando por 2 vez este curso y lo haría nuevamente las veces que sea necesario para poder refrescar mis conocimientos.
Es bastante intuitivo, solo toca poner un AND y seguir las instrucciones cambiando año por mes al agregar la nueva condición de la siguiente manera:
SELECT *
FROM (
SELECT *,
DATE_PART('YEAR', fecha_incorporacion) AS anio_incorporacion,
DATE_PART('MONTH', fecha_incorporacion) AS mes_incorporacion
FROM platzi.alumnos
) AS alumnos_con_anio
WHERE anio_incorporacion = 2020 AND mes_incorporacion = 05;
y así conseguimos todos los alumnos que se incorporaron en mayo del 2020.
Una solucion un poco diferente
select *
FROM platzi.alumnos a
where fecha_incorporacion >= '2018-05-01' and fecha_incorporacion < '2018-06-01'
Yo estoy usando MySQL WorkBench:
La solución al reto seria:
<SELECT *
FROM platzi.alumnos
WHERE YEAR(fecha_incorporacion)=2018 AND MONTH(fecha_incorporacion)=5;>
SELECT *
FROM platzi.alumnos
WHERE
EXTRACT(YEAR FROM fecha_incorporacion) = 2018
AND EXTRACT(MONTH FROM fecha_incorporacion)= 5
;
SELECT *
FROM platzi.alumnos
WHERE (EXTRACT(YEAR FROM fecha_incorporacion)) = 2019
SELECT *
FROM platzi.alumnos
WHERE (DATE_PART('YEAR', fecha_incorporacion)) = 2018
SELECT *
FROM (
SELECT *,
DATE_PART('YEAR', fecha_incorporacion) AS anio_incorporacion
FROM platzi.alumnos
)AS alumnos_con_anio
WHERE anio_incorporacion = 2020;
-- RETO
SELECT *
FROM (
SELECT *,
DATE_PART('YEAR', fecha_incorporacion) AS anio_incorporacion,
DATE_PART('MONTH', fecha_incorporacion) AS mes_incorporacion
FROM platzi.alumnos
) AS alumnos_con_anio_mes
WHERE anio_incorporacion = 2020
AND mes_incorporacion = 7;
RETO
Seleccionar los alumnos que se incorporaron en el año 2018 y en el mes de mayo.
Solución 1:
SELECT *
FROM platzi.alumnos
WHERE EXTRACT(YEAR FROM fecha_incorporacion) = 2018
AND EXTRACT(MONTH FROM fecha_incorporacion) = 5;
Solución 2:
SELECT *
FROM platzi.alumnos
WHERE DATE_PART('YEAR', fecha_incorporacion) = 2018
AND DATE_PART('MONTH', fecha_incorporacion) = 5;
Solución 3:
SELECT *
FROM(
SELECT *,
EXTRACT(YEAR FROM fecha_incorporacion) anio_incorporacion,
EXTRACT(MONTH FROM fecha_incorporacion) mes_incorporacion
FROM platzi.alumnos
) alumnos_anio
WHERE anio_incorporacion = 2018
AND mes_incorporacion = 5;
Solución 4:
SELECT *
FROM platzi.alumnos
WHERE TO_CHAR(fecha_incorporacion, 'YYYYMM') = '201805';
Mi solución con SQL Server
SELECT *
FROM alumnos
WHERE YEAR(fecha_incorporacion) = 2018 AND MONTH(fecha_incorporacion) = 5;
Mi solución, mostrando además otra forma de agregar más de un valor al where por el cual filtrar ^-^
SELECT *
FROM (
SELECT *,
DATE_PART('YEAR', fecha_incorporacion) as anio,
DATE_PART('MONTH', fecha_incorporacion) as mes
FROM platzi.alumnos
) alumnos_with_date
WHERE (anio, mes) = (2018,5);
Otra forma de filtrar usando date_trunc
select *
from platzi.alumnos
where date_trunc('year', fecha_incorporacion)::date = '2018-01-01'
Mi solución con ambas formas aprendidas en clase.
SELECT *
FROM platzi.alumnos
WHERE (EXTRACT(YEAR FROM fecha_incorporacion)) = 2018
AND (EXTRACT(MONTH FROM fecha_incorporacion)) = 5;
SELECT *
FROM (
SELECT *,
DATE_PART('YEAR', fecha_incorporacion) AS anio_incorporacion,
DATE_PART('MONTH', fecha_incorporacion) AS mes_incorporacion
FROM platzi.alumnos
) AS alumnos_con_anio_mes
WHERE anio_incorporacion = 2018
AND mes_incorporacion = 5;
SELECT *
FROM platzi.alumnos
WHERE (EXTRACT(YEAR FROM fecha_incorporacion)) = 2018
AND (EXTRACT(MONTH FROM fecha_incorporacion)) = 05;
Mi reto
SELECT *
FROM platzi.alumnos
WHERE DATE_PART ('YEAR', fecha_incorporacion) = 2018 and DATE_PART ('month', fecha_incorporacion) = 5;
Además me encontré con la manera de filtrar por día de la semana, entonces como reto personal, me pregunte cual es el día de la semana en donde mas se registraron personas para el 2018
SELECT COUNT(*) AS total,
case
when extract(DOW from fecha_incorporacion) = 0 then 'domingo'
when extract(DOW from fecha_incorporacion) = 1 then 'lunes'
when extract(DOW from fecha_incorporacion) = 2 then 'martes'
when extract(DOW from fecha_incorporacion) = 3 then 'miercoles'
when extract(DOW from fecha_incorporacion) = 4 then 'jueves'
when extract(DOW from fecha_incorporacion) = 5 then 'viernes'
when extract(DOW from fecha_incorporacion) = 6 then 'sabado'
end dia_semana
from platzi.alumnos
where extract(YEAR from fecha_incorporacion) = 2018
group by dia_semana
order by total desc;
Encontré que para ese año los miércoles son los días que generan mayores suscripciones o matriculas
Aquí las soluciones:
select * FROM platzi.alumnos
WHERE EXTRACT(year from fecha_incorporacion) = 2018
and
extract(MONTH from fecha_incorporacion) = 5;
select * FROM platzi.alumnos
WHERE date_part('year', fecha_incorporacion) = 2018
AND
date_part('month', fecha_incorporacion) = 5;
select *
FROM (
SELECT EXTRACT(YEAR from fecha_incorporacion) as anio,
extract(month from fecha_incorporacion) as mes, *
FROM platzi.alumnos
) as pla
WHERE anio = 2018
AND mes = 5
order by fecha_incorporacion asc;
Mi solución al reto
SELECT *
FROM (
SELECT *,
DATE_PART('YEAR', fecha_incorporacion) AS annio_inicio,
DATE_PART('MONTH', fecha_incorporacion) AS mes_inicio
FROM platzi.alumnos
) AS year_alumnos
WHERE annio_inicio = 2018 AND mes_inicio = 5;
Para SQL Server
-- METODO 3
-- FECHA FILTRO CON SUBCONSULTA
USE [platzi]
SELECT *
FROM
(
SELECT *, YEAR(fecha_incorporacion) AS anio
FROM platzi.alumnos
) AS alumnos_con_anio
WHERE anio = 2019
/*
FILTRAR MAYO DE 2018
*/
-- METODO 1
USE [platzi]
SELECT *
FROM
(
SELECT *, YEAR(fecha_incorporacion) AS anio, MONTH(fecha_incorporacion) AS mes
FROM platzi.alumnos
) AS alumnos_con_anio_mes
WHERE anio=2018 AND mes=5
GO
-- METODO 2
USE [platzi]
SELECT *
FROM platzi.alumnos
WHERE CONVERT(CHAR(10), fecha_incorporacion,126) LIKE '2018-05%'
GO
Solucion del reto
select *
from (
select *,DATEPART(year, fecha_incorporacion) as anio_incorporation,
DATEPART(month, fecha_incorporacion) as mes_incorporation
from platzi.alumnos
) as alumnos_anio_mes
where anio_incorporation = 2018 and mes_incorporation = 5
Siguiendo el curso, comparto solucion:
SELECT *
FROM (
SELECT *,
DATE_PART('YEAR', fecha_incorporacion) AS anio_incorp,
DATE_PART('MONTH', fecha_incorporacion) AS month_incorp
FROM platzi.alumnos
) AS alumnos_con_anio
WHERE anio_incorp = 2018 AND month_incorp = 05;
💪
SELECT *
FROM platzi.alumnos
WHERE DATE_PART('YEAR', fecha_incorporacion) = 2018
AND DATE_PART('MONTH', fecha_incorporacion) = 5;
Solucion
SELECT *
FROM platzi.alumnos
WHERE ( extract (year from fecha_incorporacion )) = 2019 and (extract (month from fecha_incorporacion )) = 05
Tambien lo quise ordenar para ver quien fue el primero segun la hora:
SELECT *
FROM platzi.alumnos
WHERE ( extract (year from fecha_incorporacion )) = 2019 and (extract (month from fecha_incorporacion )) = 05
ORDER BY ( extract (hour from fecha_incorporacion )) asc;
SELECT *
FROM platzi.alumnos
WHERE DATE_PART('YEAR',fecha_incorporacion) = 2018 AND
DATE_PART('month',fecha_incorporacion) = 5;
Para seleccionar registros por año en una tabla, generalmente puedes utilizar la función EXTRACT para obtener el año de una columna de tipo fecha. Sin embargo, la disponibilidad de esta función puede depender del sistema de gestión de bases de datos específico que estés utilizando
PostgreSQL
En PostgreSQL, puedes usar la función EXTRACT de la siguiente manera:
SELECT DISTINCT EXTRACT(YEAR FROM fecha_incorporacion) AS anio
FROM platzi.alumnos;
MySQL
En MySQL, la función YEAR puede ser utilizada
SELECT DISTINCT YEAR(fecha_incorporacion) AS anio
FROM platzi.alumnos;
SQL Server
En SQL Server, también puedes utilizar la función YEAR:
SELECT DISTINCT YEAR(fecha_incorporacion) AS anio
FROM platzi.alumnos;
SELECT
EXTRACT(HOUR FROM fecha_incorporacion) AS horas,
EXTRACT(MINUTE FROM fecha_incorporacion) AS minutos,
EXTRACT(SECOND FROM fecha_incorporacion) AS segundos
FROM platzi.alumnos;
EXTRACT(HOUR FROM fecha_incorporacion) obtiene las horas de la columna fecha_incorporacion.
EXTRACT(MINUTE FROM fecha_incorporacion) obtiene los minutos.
EXTRACT(SECOND FROM fecha_incorporacion) obtiene los segundos.
SELECT *
FROM (
SELECT *,DATE_PART('YEAR', fecha_incorporacion)AS anio_incorporacion,
DATE_PART('Month', fecha_incorporacion)AS mes_incorporacion
from platzi.alumnos
)as alumnos_con_anioymes
where anio_incorporacion=2020 and mes_incorporacion=5;
-- SQL SERVER
SELECT * FROM alumnos
WHERE YEAR(fecha_incorporacion)=2018 AND
MONTH(fecha_incorporacion)=05
SELECT *
FROM (
SELECT *,
DATE_PART(‘YEAR’, fecha_incorporacion) AS anio_incorporacion,
DATE_PART(‘MONTH’, fecha_incorporacion) AS mes_incorporacion
FROM platzi.alumnos
) AS alumnos_mes_anio
WHERE anio_incorporacion = 2018
AND mes_incorporacion = 05;
– reto de tarea sacar las horas mysql
SELECT EXTRACT(HOUR FROM fecha_incorporacion) AS hora_de_incorporacion,
EXTRACT(MINUTE FROM fecha_incorporacion) AS minuto_de_incorporacion,
EXTRACT(SECOND FROM fecha_incorporacion) AS segundo_de_incorporacion
FROM platzi.alumnos;
– ejercicio en postgresSQL
SELECT DATE_PART(‘HOUR’, fecha_incorporacion) AS hora_de_incorporacion,
DATE_PART(‘MINUTE’, fecha_incorporacion) AS minuto_de_incorporacion,
DATE_PART(‘SECOND’, fecha_incorporacion) AS segundo_de_incorporacion
FROM platzi.alumnos;
select date_part( 'year', fecha_incorporacion) as anio_incorporacion,
date_part('month', fecha_incorporacion) as mes_incorporacion,
date_part('day', fecha_incorporacion) as dia_incorporacion
from alumnos where extract (year from fecha_incorporacion) = 2020 order by anio_incorporacion desc;
select * from(
select *,date_part('year',fecha_incorporacion) as anio_incorporacion,
date_part('month',fecha_incorporacion) as mes_incorporacion
from platzi.alumnos)
as alumnos_con_anio
where anio_incorporacion = 2018
and mes_incorporacion = 5;```
Mi solucion al reto:
-- Alumnos que se incorporaron en mayo de 2018.
SELECT * --1
FROM platzi.alumnos
WHERE EXTRACT(YEAR FROM fecha_incorporacion) = 2020
AND DATE_PART('MONTH', fecha_incorporacion) = 5;
SELECT * --2
FROM (
SELECT *, DATE_PART('YEAR', fecha_incorporacion) AS anio_incorporacion,
EXTRACT(MONTH FROM fecha_incorporacion) AS mes_incorporacion
FROM platzi.alumnos
) AS alumnos_con_anio
WHERE anio_incorporacion > 2018 AND mes_incorporacion = 5;```
Hola, por acá dejo mi código solución
SELECT *
FROM (
SELECT *,
EXTRACT(YEAR FROM fecha_incorporacion) AS año_incorporacion,
EXTRACT(MONTH FROM fecha_incorporacion) AS mes_incorporacion
FROM platzi.alumnos
) AS alumnos_con_fecha
WHERE año_incorporacion = 2018 AND mes_incorporacion = 5
ORDER BY fecha_incorporacion ASC;
Mi humilde solución :
SELECT *
FROM (
SELECT * ,
DATE_PART(‘MONTH’,fecha_incorporacion)AS mes_incorporacion,
DATE_PART(‘YEAR’,fecha_incorporacion) AS anio_incorporacion
FROM platzi.alumnos
)AS año_mes_incorpacion
WHERE mes_incorporacion = '05’
AND anio_incorporacion = ‘2018’ ;
Aporte.
select *
from
alumnos
where (extract(year from fecha_incorporacion)) = 2018
and (extract(month from fecha_incorporacion)) = 05
Mi aporte
--V1
SELECT *
from (
select *,date_part ('year',fecha_incorporacion)as año
,date_part('month',fecha_incorporacion) as mes from platzi.alumnos
)as alumnos
where año = 2018 and mes = 5
--V2
select *
from platzi.alumnos
where EXTRACT(YEAR FROM fecha_incorporacion) = 2018 AND EXTRACT(MONTH FROM fecha_incorporacion) = 5;
Solución SQL Server
select *
from platzi.alumnos
where month(fecha_incorporacion)=05 and YEAR(fecha_incorporacion) = 2018
La solucion al reto, usando las 2 clausulas EXTRACT, DATE_PART y con subconsulta es:
.
Con EXTRACT
SELECT *
FROM platzi.alumnos
WHERE (EXTRACT(YEAR FROM fecha_incorporacion)) = 2018
AND (EXTRACT (MONTH FROM fecha_incorporacion)) = 5;
con DATE_PART
SELECT *
FROM platzi.alumnos
WHERE (DATE_PART('YEAR', fecha_incorporacion)) = 2018
AND (DATE_PART('MONTH', fecha_incorporacion)) = 5;
Y con subconsulta
SELECT *
FROM (
SELECT *,
DATE_PART('YEAR', fecha_incorporacion) AS anio_incorporacion,
DATE_PART('MONTH', fecha_incorporacion) AS mes_incorporacion
FROM platzi.alumnos
) AS alumnos_con_anio
WHERE anio_incorporacion = 2018 AND mes_incorporacion = 5;
SELECT *
FROM platzi.alumnos
WHERE DATE_PART(‘YEAR’,fecha_incorporacion)=2018
AND DATE_PART(‘MONTH’,fecha_incorporacion)=03;
SELECT nombre, apellido, fecha_incorporacion
FROM platzi.alumnos
WHERE
DATE_PART('YEAR', fecha_incorporacion) = 2018
AND
DATE_PART('MONTH', fecha_incorporacion) = 05
;
SELECT nombre, apellido, fecha_incorporacion
FROM platzi.alumnos
WHERE
EXTRACT('YEAR' FROM fecha_incorporacion) = 2018
AND
EXTRACT('MONTH' FROM fecha_incorporacion) = 05
;
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?