powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывести статистику за прошлый месяц: сколько покупок по каждой категории и средняя цена по
4 сообщений из 4, страница 1 из 1
Вывести статистику за прошлый месяц: сколько покупок по каждой категории и средняя цена по
    #39810989
Alexis7z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите составить запрос) Нужно вывести статистику за прошлый месяц: сколько покупок по каждой категории и средняя цена покупки.
Хочу вывести так:
CategoryName | COUNT(CategoryName) | AVG(ProductPrice)
Категория1 | 5 | 1000
Категория2 | 2 | 500
Вот что я смог сделать пока что. Дальше не пойму как, т.к. пока только начал изучать:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT COUNT(`CategoryName`)
FROM `fishing_online_store`.`category`
WHERE `CategoryID` IN
    (SELECT `CategoryID` FROM `fishing_online_store`.`group` WHERE `GroupID` IN
        (SELECT `GroupID` FROM `fishing_online_store`.`product` WHERE `ProductID` IN
            (SELECT `ProductID` FROM `fishing_online_store`.`purchasehistory`
            WHERE `PurchaseDate` > LAST_DAY(DATE_SUB(CURDATE() , INTERVAL 2 MONTH)) + INTERVAL 1 DAY
            AND  `PurchaseDate` < DATE_ADD(LAST_DAY(CURDATE() - INTERVAL 1 MONTH), INTERVAL 1 DAY)
)));


Вот таблицы, которые использую.

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Вывести статистику за прошлый месяц: сколько покупок по каждой категории и средняя цена по
    #39811059
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT c.CategoryName, COUNT(c.CategoryName), AVG(p.ProductPrice)
FROM category c
LEFT JOIN group g ON g.CategoryID = c.CategoryID
LEFT JOIN product p ON p.GroupID = g.GroupID
LEFT JOIN purchasehistory ph ON ph.ProductID = p.ProductID
                         -- если ph.PurchaseDate имеет тип DATETIME или TIMESTAMP, то
                            AND ph.PurchaseDate >= LAST_DAY(CURDATE - INTERVAL 2 MONTH) + INTERVAL 1 DAY
                            AND ph.PurchaseDate < LAST_DAY(CURDATE - INTERVAL 1 MONTH) + INTERVAL 1 DAY
                         -- если ph.PurchaseDate имеет тип DATE, то
                         -- AND ph.PurchaseDate > LAST_DAY(CURDATE - INTERVAL 2 MONTH)
                         -- AND ph.PurchaseDate <= LAST_DAY(CURDATE - INTERVAL 1 MONTH)
GROUP BY c.CategoryName
...
Рейтинг: 0 / 0
Вывести статистику за прошлый месяц: сколько покупок по каждой категории и средняя цена по
    #39811060
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. Средняя цена - это как средняя температура по больнице. Величина бессмысленная. Например, разделение одной покупки на две, с половинным количеством каждая - изменит эту среднюю цену, хотя всё остальное останется прежним...
...
Рейтинг: 0 / 0
Вывести статистику за прошлый месяц: сколько покупок по каждой категории и средняя цена по
    #39811355
Alexis7z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо большое)) Очень сильно помогли)) Долго мучался с SELECT'ами и напрасно(. Оказывается по другому надо было))
Вот что в итоге вышло:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT c.CategoryName AS "Категория", COUNT(ph.ProductID) AS "Количество", AVG(p.ProductPrice) AS "Средняя цена"
FROM category c
INNER JOIN `group` g ON g.CategoryID = c.CategoryID
INNER JOIN `product` p ON p.GroupID = g.GroupID
INNER JOIN `purchasehistory` ph ON ph.ProductID = p.ProductID
                            AND ph.PurchaseDate >= LAST_DAY(CURDATE() - INTERVAL 2 MONTH) + INTERVAL 1 DAY
                            AND ph.PurchaseDate < LAST_DAY(CURDATE() - INTERVAL 1 MONTH) + INTERVAL 1 DAY
GROUP BY c.CategoryName;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывести статистику за прошлый месяц: сколько покупок по каждой категории и средняя цена по
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]