create table products
(
id int not null,
productname varchar(45),
productcategory varchar(45),
productprice decimal(8,2),
datepurchased varchar(45),
primary key (id)
);
INSERT INTO products (id, productname, productcategory, productprice, datepurchased) VALUES
(1, 'Toy car', 'toys', 200.30, '2017 December'),
(2, 'Phone', 'phone', 50.00, '2017 December'),
(3, 'Disk drive', 'Accessories', 10.00, '2018 January'),
(4, 'Mouse', 'Accessories', 20.30, '2018 January'),
(5, 'Baby doll', 'toys', 100.00, '2018 February'),
(6, 'Toy car', 'toys', 40.10, '2018 March');
Моя sql скрипка: http://sqlfiddle.com/#!9/4ff0cf/1/0
Результаты должны выглядеть следующим образом.
Month | ProductCategory | Amount
-------------------------------------------------
2017 December | toys | 200.30
2018 January | phone | 50.00
2018 January | Accessories | 30.30
2018 February | toys | 100.00
2018 March | toys | 40.10
Если вы заметили, у аксессуаров есть несколько записей за январь, и они суммируются.
Пожалуйста, включите sql скрипку в свой ответ, если можете. Благодарю.
Скрипка здесь: http://sqlfiddle.com/#!9/4ff0cf/15/0
Вы хотите создать группу с несколькими параметрами:
SELECT id, productcategory, sum(productprice), datepurchased FROM
products GROUP BY productcategory, datepurchased;
Попробуй это:
select datepurchased month, productcategory, sum(productprice) amount
from products
group by datepurchased, productcategory
order by datepurchased, amount desc;
Увидеть рабочий ДЕМО на SQL Fiddle.
Поскольку столбец datepurchased не является столбцом DATE или DATETIME, его необходимо обрабатывать с помощью определенных строковых функций.
Вот ваш ответ, надеюсь, он вам поможет. Любая проблема, дайте мне знать, пожалуйста.
ВЫБРАТЬ cte._month , cte.productcategory , SUM (cte.productprice) AS totalPrice ОТ ( ВЫБРАТЬ Я бы ,наименование товара ,Категория продукта ,цена продукта , CAST (SUBSTRING_INDEX (дата приобретения, '', 1) как неподписано) как _год , TRIM (SUBSTRING (дата выкуплена, POSITION ('' IN дата выкуплена), (ДЛИНА (дата выкуплена) - ДЛИНА (SUBSTRING_INDEX (дата приобретения, '', 1))) )) КАК МЕСЯЦ ИЗ продуктов ) Как GROUP BY cte._month, cte.productcategory;
URL скрипты SQL: http://sqlfiddle.com/#!9/4ff0cf/43