У меня есть две таблицы со следующими данными
Таблица 1: клиенты
|---|-----|
|id |name |
|---|-----|
|1 |Bob |
|---|-----|
|2 |Alice|
|---|-----|
Таблица 2: подписки
|---|------------|-------------|
|id |customer_id |end_date |
|---|------------|-------------|
|1 |1 |2020-03-16 |
|---|------------|-------------|
|2 |1 |2020-04-05 |
|---|------------|-------------|
|3 |2 |2020-02-05 |
|---|------------|-------------|
|4 |1 |2020-05-04 |
|---|------------|-------------|
|5 |2 |2020-03-16 |
|---|------------|-------------|
Мне нужно количество клиентов, где Максимум (subscription.end_date) каждого клиента равен сегодняшнему дню.
Мой текущий запрос
select COUNT(customers.id), MAX(customer_payments.package_end_date)
from `customers`
inner join `customer_payments` on `customer_payments`.`customer_id` = `customers`.`id`
group by `customer_payments`.`package_end_date`
having DATE(customer_payments.package_end_date) = '2020-03-16'
Возвращает клиентов, которые имеют end_date, как и сегодня; но не самой большой даты. В указанных данных, если я запускаю запрос на сегодняшнюю дату, я получаю счет 2. Он выбирает и customer_id 1, и 2, даже если customer_id из 1 имеет наибольшую дату, чем сегодня.
У меня есть также пробовал запросы, упомянутые в эти ответы , также получая тот же результат.