En mi tabla tengo:
Activity : Date --------------- doSomething1 : June 1, 2020 doSomething2 : June 14, 2020Quiero poder hacer una consulta para poder obtener el siguiente resultado (suponiendo que hoy sea el 1 de junio de 2020):
Today : ThisMonth 1 : 2Miré group by pero no estaba seguro de cómo hacerlo sin mucho código adicional y creo que es muy probable que haya una solución mucho más simple que me falta. Algo que solo devolverá una sola fila con dos resultados. ¿Es posible? y si lo es, ¿cómo?
¿Es esto lo que quieres?
select array_agg(activity) filter (where date = current_date) as today, array_agg(activity) filter (where date <> current_date) as rest_of_month from t where date_trunc('month', date) = current_date;Esto usa matrices para que pueda manejar más de una actividad en cualquier categoría.
puede escribir subconsultas para obtener datos en una sola fila,
Select today , month from ( ( query to get today's count ) as today, ( query to get month's count ) as month ) t;sí, puede agrupar por fechas para obtener el recuento de hoy y mes. Espero que esto te dé alguna percepción para continuar.
Suponga que desea consultar en función de una fecha en particular:
select count(case when d.date = :p_query_date then 0 end) day_count ,count(0) month_count from d -- your table name where d.date between date_trunc('month', :p_query_date) and date_trunc('month', :p_query_date + interval '1 month') - interval '1 day'La consulta anterior asume que tiene un índice definido en la columna d.date. Si tiene un índice definido en date_trunc('mes', fecha), la condición de consulta se puede simplificar a:
date_trunc('mes', d.fecha) = date_trunc('mes', :p_query_date)