Нужно выбрать пользователей, которым отправлено больше N уведомлений за последние 24 часа.
Есть две таблицы:
1. public.user
create table public.user
(
"id" serial primary key,
"email" varchar(30) unique not null
);
2. public.notification
create table public.notification
(
"id" serial PRIMARY KEY,
"user_id" serial REFERENCES public.user (id) ON DELETE CASCADE,
"sent_timestamp" timestamp default current_timestamp
);
Скрипт, которым выбираю пользователей. При этом, на вход подается список пользователей, так сказать "подозреваемых", т.е. мы ищем не по всем-всем пользователям в базе, а только по суженному списку.
SELECT public.user.email
FROM public.user
WHERE public.user.email IN ('test1@test.com', 'test2@test.com')
AND
(
SELECT COUNT (*) FROM
(SELECT *
FROM public.user
INNER JOIN public.notification ON public.user.id = public.notification.user_id
WHERE public.notification.sent_timestamp > NOW() - (1440 * interval '1 minute')
) as c
WHERE public.user.email IN ('test1@test.com', 'test2@test.com')
) > 10
;
Но в результате получается, что считается общее количество отправленных уведомлений всем "подозреваемым".
Помогите, пожалуйста, второй час не соображу как лучше сделать