Вы можете использовать предложение FILTER
:
Предложение фильтра расширяет агрегатные функции (sum, avg, count,…) дополнительным предложением where. Результат агрегата строится только из тех строк, которые также удовлетворяют дополнительному условию where.
SELECT to_char(pubdate, 'YYYY-MM') pub_month
, COUNT(*) FILTER (WHERE purchased) total_bought
, COUNT(*) total
FROM books
GROUP BY pub_month;
или условное агрегирование:
SELECT to_char(pubdate, 'YYYY-MM') pub_month
, SUM(CASE WHEN purchased THEN 1 ELSE 0 END) total_bought
, COUNT(*) total
FROM books
GROUP BY pub_month;
Дополнительное примечание: WHERE purchased=true
<=> WHERE purchased