sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo se puede formular la clasificación de objetos en cubos como una expresión JPQL válida?

En primer lugar, necesita una forma JPA de calcular la diferencia entre startDate y pageDate en la unidad respectiva, que es algo difícil de formular porque depende mucho de la base de datos. Al final, necesitará algunas funciones personalizadas o escribir una consulta JPQL muy complicada.

Calcular los días entre dos fechas en PostgreSQL es tan fácil como hacer date_part('day', t2 - t1) . Para las horas que ya necesita date_part('day', t2 - t1) * 24 + date_part('hour', t2 - t1) y minutos date_part('day', t2 - t1) * 24 * 60 + date_part('hour', t2 - t1) * 60 + date_part('minute', t2 - t1) .

Para usar estas funciones de base de datos en JPQL, puede usar la FUNCTION sintaxis como FUNCTION('date_part', 'day', :startDate - pageDate) .

Al final, agruparás por tal expresión y harás un conteo por id, algo como lo siguiente

SELECT COUNT(o.id) FROM MyObject o GROUP BY FUNCTION('date_part', 'day', :startDate - o.pageDate)