@siarheipashkevich
developer

Как написать подзапрос в запросе с группировкой?

Друзья, подскажите пожалуйста, не могу придумать, как написать следующий запрос:

Есть таблица: sales
id INT
total_sum decimal
type varchar
event_date timestamp
...


И таблица: sale_items
sale_id int
quantity decimal
...


Мне нужно получить информацию о sales в сгруппированном виде по event_date, но не могу понять как посчитать сумму всех sale_items в подзапросе. Вот текущий запрос (с закоменченным подзапросом, который делает весь запрос неправильным):
select
       DATE(event_date),
       COUNT(*)                                sales_count,
       COUNT(IF(type = 'refund', 1, NULL))     refunds_count,
       SUM(IF(type = 'sale', total_sum, 0))    revenue,
       AVG(IF(type = 'sale', total_sum, NULL)) avg_check,
#        (select count(*) from sale_items where sale_id=sales.id) as sale_items_count
from sales
group by DATE(event_date);


Возможно ли это выполнить одни запросом? Буду очень благодарен за помощь с запросом.
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
@galaxy
как-то так
...
  sum(i.count)
from sales
join (
  select sale_id, count(*) count from sale_items
) i on (i.sale_id = sales.id)
group by DATE(event_date);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы