Подсчет количества строк, возвращенных в группе по

#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;