#mysql #sql #count #sum #db2
#mysql #sql #количество #сумма #db2
Вопрос:
Итак, мне нужно сделать запрос, который отображает, сколько раз каждый товар был продан, у меня есть две таблицы, которые выглядят примерно так
Products
----------- ------- -----------
| productID | price | inventory |
----------- ------- -----------
| 31f9d | 21 | 109 |
| M21xZ | 80 | 87 |
| 56JmZ | 35 | 48 |
----------- ------- -----------
orderDetails
--------- ------- ----------
| orderId | item | Quantity |
--------- ------- ----------
| 1 | 31f9d | 2 |
| 2 | 31f9d | 5 |
| 2 | 56JmZ | 3 |
--------- ------- ----------
Заранее спасибо!
Комментарии:
1. Это очень простой агрегированный запрос SQL. Что вы пробовали, что не сработало?
2. В языках программирования вы указываете компьютеру, как что-то делать, например, перебирать данные с помощью ForEach . SQL — это не язык программирования, а язык запросов четвертого поколения. Вы просто говорите компьютеру, что делать, а не как это делать. Вы не говорите «перебирать мои данные», а «дайте мне продукты в сочетании с суммами их заказов». СУБД должна решить, как этого добиться.
Ответ №1:
Если вам просто нужно количество продаж на продукт, вы можете агрегировать таблицу сведений:
select item, count(*) as cnt_sales, sum(quantity) as sum_quantity
from orderdetails
group by item
Если вам также нужны подробности о каждом продукте, вы можете присоединиться.
select p.*, d.cnt_sales, d.sum_quantity
from products p
left join (
select item, count(*) as cnt_sales, sum(quantity) as sum_quantity
from orderdetails
group by item
) d on d.item = p.productid
left join
Позволяет использовать продукты без какой-либо продажи; это приведет null
к значениям в столбцах cnt_sales
и sum_quantity
в результирующем наборе.
Комментарии:
1. Спасибо! Использовал другой ответ, но также многому научился из этого!
Ответ №2:
Объедините обе таблицы вместе, затем просто сгруппируйте по ItemId:
select p.productID, sum(o.Quantity) from Products p
left join orderDetails o on p.productID = o.item
group by p.productID
Комментарии:
1. Кстати, вы объединяете таблицы . База данных — это целое, содержащее все таблицы.
2. Не носитель языка, хех, исправлено 🙂
3. Спасибо! это именно то, что я искал, многому научился, еще раз спасибо!