Моя база данных выглядит так:
Customer (c_id, c_name)
Products (p_id, p_name, p_cost)
Buys (p_id references Products, c_id references Customer)
Я хочузапросить базу данных для следующего:
- Клиенты с максимальным количеством продуктов: если есть 2 или более клиентов с одинаковым количеством продуктов, общая стоимость всех продуктов считается
Я дал ему попытку, но он показывает ошибку, говорящую: "Неверный синтаксис рядом)".
Я пытаюсь отладить его безуспешно.
Может кто-нибудь отладить этот запрос или даже предложить более оптимальный запрос?
select a1.c_id, a1.c_name
from
(select c.c_id, c.c_name
from Customer c
where c.c_id in
(select b.c_id
from Buys b
group by b.c_id
having COUNT(b.p_id) >= all
(
select COUNT(b.p_id)
from Buys b
group by b.c_id
)
)
)
as a1
join
(select b.c_id, SUM(p.p_cost) as 'SumCost'
from Buys b
join Products p on b.p_id = p.p_id
group by b.c_id
) as a2 on a1.c_id = a2.c_id
where
a2.SumCost = (select MAX(SumCost)
from
(select b.c_id, SUM(p.p_cost) as 'SumCost'
from Buys b
join Products p on b.p_id = p.p_id
group by b.c_id
)
)
Обновление:
Приведенный выше запрос успешно отлажен mohdowais.Теперь я думаю, что этот запрос не эффективен.Можете ли вы предложить более эффективный вариант?Я не использовал никаких индексов.