#mysql #sql
Вопрос:
извлеките последние три последние суммы заказов для каждого клиента на основе заказанных дат, упорядочите имя клиента по возрастанию и извлеките первые 15 записей.
table name: order_table columns: order_id ordered_date cust_name product order_amount
Приведенные данные:
160001 01/01/2020 Richard Books 1120 160008 01/02/2020 Richard Chairs 1340 160016 01/03/2020 Richard Computer 1299 160007 01/04/2020 Richard Desk 2929 160013 03/01/2020 Benny Monitor 1149 160010 03/02/2020 Benny Other Electronics 1449 160004 03/03/2020 Benny Printer 2399 160012 03/04/2020 Benny Software 3599 160017 01/02/2020 Ram Speakers 5110 160023 02/03/2020 Ram Bookcases 2330
требуемая выборка выходных данных:
Benny 3599 2399 1449 Ram 2330 5110 richard 2929 1299 1340
Мой код:
SELECT order_table.cust_name, (SELECT MAX(order_table.ordered_date) FROM order_table GROUP BY order_table.cust_name ORDER BY ordered_date DESC LIMIT 15) FROM order_table ORDER BY ordered_date DESC LIMIT 15*/ SELECT MAX(order_table.ordered_date) FROM order_table GROUP BY order_table.cust_name ORDER BY ordered_date DESC LIMIT 15;
как справиться с постановкой проблемы такого типа и разбить ее на части, чтобы решить эту проблему?
Ответ №1:
Это должно дать ответ, но не в предписанном формате, любая помощь в получении требуемых результатов будет высоко оценена.
select cust_name,order_amount from order_table where ( select count(*) from order_table as c where c.cust_name =order_table.cust_name and c.ordered_datelt;=order_table.ordered_date )lt;=3 order by cust_name, ordered_date desc ;