Без "WHERE" запрос корректно отрабатывает:
SELECT
SUM (CASE WHEN STATUS = 20 THEN 1 ELSE 0 END) AS `paid_count`,
SUM(CASE WHEN STATUS <> 20 THEN 1 ELSE 0 END) AS `unpaid_count`,
`method` AS `payment_system`
FROM `payment`
GROUP BY `method`
ORDER BY `paid_count` DESC
LIMIT 20
Результат:
Как только добавляется "WHERE" для фильтрации по дате - перестаёт считаться
unpaid_count(выводит 0), хотя
paid_count считает корректно:
SELECT
SUM(CASE WHEN STATUS = 20 THEN 1 ELSE 0 END) AS `paid_count`,
SUM(CASE WHEN STATUS <> 20 THEN 1 ELSE 0 END) AS `unpaid_count`,
`method` AS `payment_system`
FROM `payment`
WHERE (`paid_at` >= 1656622800) AND (`paid_at` <= 1657400399)
GROUP BY `method`
ORDER BY `paid_count` DESC LIMIT 20
Результат:
(неоплаченные записи в указанном диапазоне дат есть)