una - Consulta SQL para sumar condicionalmente según la ventana de fecha móvil
sumar por filas sql server (3)
Tal vez puedas unir los diferentes meses.
select sum(whatever), ''january'' from user where month = ''january''
union all
select sum(whatever), ''february'' from user where month = ''february''
...
Estoy tratando de averiguar algunas estadísticas de ventana deslizante en mis usuarios. Tengo una tabla con un usuario y columnas como created_at y verified_at. Para cada mes, me gustaría saber cuántos usuarios se registraron (un grupo simple por date_trunc del created_at), y luego de esas personas, cuántos verificaron dentro de mi ventana deslizante (llámelo 60 días).
Me gustaría hacer una consulta SQL que me dé algo como:
Month | Registered | Verified in 60 days
Jan 2009 | 1543 | 107
Feb 2009 | 2000 | 250
Estoy usando postgresql. Empecé a ver la suma (caso ...), pero no sé si puedo hacer que mi caso dependa de la fecha de ajuste de alguna manera.
Esto no funciona, por supuesto, pero aquí está la idea:
SELECT DATE_TRUNC(''month'', created_at) as month,
COUNT(*) as registered,
SUM(CASE WHEN verified_at < month+60 THEN 1 ELSE 0 END) as verified
FROM users
GROUP BY DATE_TRUNC(''month'', created_at)
SELECT
MONTH,
COUNT(*) AS Registered,
SUM (CASE WHEN datediff(day,reg_date,ver_date) < 60 THEN 1 ELSE 0) as ''Verified in 60 //days datediff is an MSSQL function amend for postgresql''
FROM
TABLE
GROUP BY
MONTH
SELECT COUNT(created_at) AS registered,
SUM(CASE WHEN verified_at <= created_at + ''60 day''::INTERVAL THEN 1 ELSE 0 END) AS verified
FROM generate_series(1, 20) s
LEFT JOIN
users
ON created_at >= ''2009-01-01''::datetime + (s || '' month'')::interval
AND created_at < ''2009-01-01''::datetime + (s + 1 || '' month'')::interval
GROUP BY
s