Я Очень люблю язык sql и когда мне дают задачку я в душе радуюсь. Одна из причин, это развитие. К каждой задаче можно подойти творчески и решить её многочисленными методами.
История продаж
Имеем таблицу “sales_history”:
CREATE TABLE `sales_history` ( `order_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `manager_id` int(10) unsigned NOT NULL, `amount` int(10) unsigned NOT NULL DEFAULT '0', `order_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`order_id`), KEY `manager_id` (`manager_id`) ) ENGINE=InnoDB;
в которую после каждой продажи заносится информация о заказе: id менеджера , сумма заказа (amount) , дата заказа.
Выбрать список сотрудников, у которых средняя стоимость заказов за последние 3 месяца выше, чем общая средняя стоимость заказов за последние 3 месяца.
Ответ:
SELECT `manager_id`, avg(`amount`) FROM `sales_history` WHERE `order_date` BETWEEN DATE_SUB(NOW() , INTERVAL 3 MONTH) AND NOW() GROUP BY `manager_id` HAVING avg(`amount`) > (SELECT avg( `amount` ) FROM `sales_history` WHERE `order_date` BETWEEN DATE_SUB(NOW() , INTERVAL 3 MONTH) AND NOW());
Удачи.