Para no repetir, mejor le doy like por que llegué al mismo resultado
Buen aporte :)
Mis soluciones:
SELECT*FROM platzi.alumnosWHERE(DATE_PART('YEAR', fecha_incorporacion))=2018AND(DATE_PART('MONTH', fecha_incorporacion))=05;SELECT*FROM platzi.alumnosWHERE fecha_incorporacion like '2018 -05 %';
El segundo no lo había visto, lo probé y no me funcionó
La segunda solución no se me había ocurrido, buena opción.
Como complemento, para hacer el LIKE sin errores en pgAdmin es necesario convertir la variable timestamp a string:
SELECT*FROM platzi.alumnos
WHERE fecha_incorporacion::textLIKE'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.
Muchas gracias por tu aporte Pablo. Lo tendré en cuenta
Muchas gracias por el consejo hermano
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 =2020AND mes_incorporacion =05;
y así conseguimos todos los alumnos que se incorporaron en mayo del 2020.
justamente quería llegar a esa solución, gracias compañero :)
Una solucion un poco diferente
select *FROM platzi.alumnos a
where fecha_incorporacion >='2018-05-01' and fecha_incorporacion <'2018-06-01'
Para este caso particular, sugiero utilizar BETWEEN.
select *from platzi.alumnos where fecha_incorporacion BETWEEN'2018-05-01'AND'2018-06-01';
Genial @DaRk452 ! no estaba seguro de si between era inclusivo o exclusivo
-------------------------------------RETO----------------------------------------Obtiene todos los alumnos que se incorporaron en mayo de 2018.--La función EXTRACT es una opción estándar de SQL para obtener partes de una fecha.SELECT*FROM platzi.alumnosWHEREEXTRACT(YEARFROM fecha_incorporacion)=2018ANDEXTRACT(MONTHFROM fecha_incorporacion)=5;-------Extracción con `DATE_PART`(Específico de PostgreSQL)--Obtiene todos los alumnos que se incorporaron en mayo de 2018.--La función DATE_PART es una alternativa a EXTRACT, específica de PostgreSQL.SELECT*FROM platzi.alumnosWHEREDATE_PART('Year', fecha_incorporacion)=2018ANDDATE_PART('Month', fecha_incorporacion)=5;-------Extracción con Subconsulta(Álgebra Relacional)--Obtiene todos los alumnos que se incorporaron en mayo de 2018 usando una subconsulta.--Se crea una tabla derivada con el año y mes proyectados, y luego se filtra.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_fecha
WHERE anio_incorporacion =2018AND mes_incorporacion =5;
Hola buenos dias , queria preguntar si es que la consulta de esta imagen solo funciona en postgreSQL , ya que yo estoy trabajando en Mysql y la query solo me trae el año de la operacion.
Mi duda es ¿Postgre SQL tiene alguna propiedad en especial? , ya que trae campos que no se mencionan de la tabla alumnos
La query que tienes tanto en Postgre SQL como en Mysql va a traerte solo el año de incorporación. Observa que en la sub-query solo tienes seleccionada esa variable. Si quieres que aparezca el resto de la información tendrías que poner :
[...] SELECT *, EXTRACT(YEAR FROM fecha_incorporacion) as anio_incorporacion [...] .
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);
SELECT*FROM platzi.alumnosWHEREDATE_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
SELECTCOUNT(*)AS total,case when extract(DOWfrom fecha_incorporacion)=0 then 'domingo' when extract(DOWfrom fecha_incorporacion)=1 then 'lunes' when extract(DOWfrom fecha_incorporacion)=2 then 'martes' when extract(DOWfrom fecha_incorporacion)=3 then 'miercoles' when extract(DOWfrom fecha_incorporacion)=4 then 'jueves' when extract(DOWfrom fecha_incorporacion)=5 then 'viernes' when extract(DOWfrom fecha_incorporacion)=6 then 'sabado'end dia_semana
from platzi.alumnoswhere extract(YEARfrom fecha_incorporacion)=2018group 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
interesante, ¿qué hace DOW?
inspirado en tu reto, quise saber los meses que más incorporaciones hubo:
select count(extract(month from fecha_incorporacion))as conteo,extract(month from fecha_incorporacion)as mes
FROM platzi.alumnosGROUP by mes
order by conteo desc;
Vemos que agosto es el mes con mas incorporaciones, seguido de marzo y abril.
Saludos y ánimo!
Hola ZeroRoy, según lo que me encontré aqui el DOW (Day of Week) extrae el día de la semana con un numero entero (Domingo 0 a Sábado 6).