Fijate si esto te sirve: No será muy elegante pero anda. Suponiendo que tenes una tabla "public.ejemplo" formada por id y fecha, se basa en generar los intervalos de a 15 minutos con GENERATE_SERIES y pedir en el "ON..." que "fecha" quede abarcada en el intervalo. El left join solo es para que el intervalo que no tenga registros, aparezca igual con cantidad cero. No sé cómo se comportará con grandes volúmenes, debe haber opciones mejores.
SELECT 'Entre ' || intervalo.intervalo || ' y ' || intervalo.intervalo + '15 minutes'::interval as intervalo, sum( case when id is null then 0 else 1 end) as cantidad FROM generate_series( (select min( date_trunc('hour', fecha)) from ejemplo), (select max(date_trunc('hour', fecha)) from ejemplo), '15 minutes'::interval) as intervalo LEFT JOIN public. ejemplo ON fecha >= intervalo.intervalo and fecha < intervalo.intervalo + '15 minutes'::interval GROUP BY 1 ORDER BY 1 Saludos. El mié., 29 may. 2019 a las 13:10, Edwin Quijada (< listas_quij...@hotmail.com>) escribió: > Hola! > Estoy tratando de hacer una seleccion de registros, o clasificacion, con > un intervalo de 15 minutos entre ellos. LO tengo hecho con java pero queria > ver si es posible hacerlo desde SQL. > La salida seria algo como > > 9:00 9:15 9:30 10:00..... > 4 5 21 12 > > Solo es un conteo de records en cada intervalo encontrado, el intervalo > seria consntante empezando desde las 9am hasta las 8pm > Alguna idea? > >