Estos son mis datos de muestra.
Date Name Subject Importance Location Time Rating 12/08/2020 David Work 1 London - - 1/08/2020 David Work 3 London 23.50 4 2/10/2018 David Emails 3 New York 18.20 3 12/08/2020 George Updates 2 New York - - 1/08/2019 George New Appointments5 London 55.10 2 2/10/2019 David Emails 3 Paris 18.58 3 8/09/2017 David Emails 2 Paris 18.90 5Necesito poder ver las reuniones de mañana y las 3 reuniones anteriores que he tenido con cada cliente. Por lo tanto, se ordenará por nombre, luego por fecha con las entradas limitadas por nombre a 3. ¿Podría alguien indicarme la dirección correcta para poder hacer esto?
El resultado esperado sería
Date Name Subject Importance Location Time Rating 12/08/2020 David Work 1 London - - 1/08/2020 David Work 3 London 23.50 4 2/10/2018 David Emails 3 New York 18.20 3 2/10/2019 David Emails 3 Paris 18.58 - 12/08/2020 George Updates 2 New York - - 1/08/2019 George New Appointments5 London 55.10 2Puede utilizar funciones de ventana para contar el número de reuniones de las próximas tres que son "mañana". Y luego un poco de filtrado:
select t.* from (select t.*, count(*) filter (where date = current_date + interval '1 day') over (partition by name order by date rows between 1 following and 3 following ) as cnt_tomorrow from t ) t where date = current_date + interval '1 day' or cnt_tomorrow > 0 order by name, date;Aquí hay un db<>fiddle.