#sql #postgresql
Вопрос:
Задача состояла в том, чтобы сгруппировать его по идентификатору участника и отфильтровать, выбрав только идентификатор участника, в котором забронирован хотя бы один слот. Я ожидал, что результат будет 30. Но он печатает 30 member_id по отдельности. Что я делаю не так?
select count(*) from cd.members as mem inner join cd.bookings as bks on mem.memid = bks.memid group by mem.memid having sum(slots) gt;= 1
Ответ №1:
Вам нужно выполнить подзапрос текущего запроса агрегации, а затем выбрать количество:
select count(*) from ( select cd.memid from cd.members mem inner join cd.bookings as bks on mem.memid = bks.memid group by mem.memid having sum(slots) gt;= 1 ) t;