сгруппируйте по возвращению всего три столбца на основе заголовка

#sql #postgresql

Вопрос:

Я новичок в SQL. Я пытаюсь написать запрос, который даст мне общее количество заказов на продукт и общую сумму денег, потраченных на продукт.

У меня есть следующая таблица:

 order_id, title,price
1, spiderman 42 pc Lego, 18.42
2, superman 31 pc Lego, 14.37
3, spiderman 42 pc Lego, 18.42
4, spiderman 42 pc Lego, 14.23
5, superman 31 pc Lego, 14.37
 

У меня есть этот запрос, который выполняет половину работы

 SELECT title, COUNT(*) as total_sales from orders
GROUP BY title
ORDER BY total_sales desc;
 

Я хочу добавить к запросу, сколько денег было потрачено на продукт (т. е. сумма цены за продукт), цена за продукт не является постоянной.

Ожидаемый результат:

 title,total_sales, price_sum
spiderman 42 pc Lego, 3, 51.07
superman 31 pc Lego, 2, 28.74
 

Ответ №1:

 SELECT title, COUNT(*) as total_sales,SUM(price) as price_sum from title
GROUP BY title
ORDER BY title;
 

просто добавьте total_sales

Ответ №2:

Вы можете создать view виртуальную таблицу,в которой выполняются инструкции SQL (даже если вы обновите orders таблицу, таблица представлений также будет обновлена).

 CREATE view orders_view AS
SELECT title, COUNT(*) as prod_sales from orders
GROUP BY title;

SELECT orders.title, prod_sales, SUM(price) from orders_view, orders
WHERE orders.title=orders_view.title
GROUP BY orders.title,prod_sales
ORDER BY prod_sales;
 

Ответ №3:

Используйте SUM агрегатную функцию.

 SELECT title, SUM(price) as price_sum from orders
GROUP BY title
ORDER BY title;
 

Комментарии:

1. Это не дает мне общее количество продаж по каждому продукту

2. просто добавьте еще один столбец в свой выбор с вашим количеством (*), и у вас все получится 😀