У меня есть база данных с 3 таблицами (клиенты, билеты, company_transactions).
клиентов (customer_id, полное имя)
tickets (ticket_id, тип, цена, начальная дата, конечная дата, категория)
company_transactions (транзакция_id, customer_id, тикет_идента, покупка_дата, транзакция)
Иностранные ключи: customer_id -> клиенты.customer_id, ticket_id -> tickets.ticket_id
Моя цель - получить наибольшее количество покупок для каждой категории билетов из таблицы company_transactions.Другими словами, я хочу подсчитать каждую транзакцию, совершенную каждым пользователем для каждой категории, а затем получить наибольшее количество покупок для каждой категории и кто был клиентом, который их совершил.
select tickets.category, CT.customer_id, customers.full_name
, count(category) as amount
FROM company_transactions as CT
INNER JOIN tickets ON CT.ticket_id = tickets.ticket_id
INNER JOIN customers ON CT.customer_id = customers.customer_id
GROUP BY CT.customer_id, customers.full_name, tickets.category
having count(category) =
(select max(amount)
from (
select tickets.category, CT.customer_id, customers.full_name
, count(category) as amount
from company_transactions as CT
INNER JOIN tickets ON CT.ticket_id = tickets.ticket_id
INNER JOIN customers ON CT.customer_id = customers.customer_id
group by CT.customer_id, customers.full_name, tickets.category
) as t
)
order by amount DESC;
Я ожидал получитьмаксимальное количество покупок билетов для каждой категории и кто был клиентом (имя клиента), у которого есть этот номер, но вместо этого он получил только максимальное количество покупок билетов для всех категорий.