mysql - SQL:添加与另一个 ProductID 一起购买的特定 ProductID

标签 mysql sql database visual-studio

MSORDERLINE

enter image description here

我正在尝试查找哪些产品的附加成分最多(糖浆、浓缩咖啡等)。我该怎么做?我可以找到个人销售情况,但如何在咖啡饮料中添加浓缩咖啡?

Select p.ProductName, TotalADDON = SUM(Quantity)
From MSProducts p, MSOrderline o
where p.ProductID = o.ProductID
Group By p.ProductName

这是我想出的最好的方法,但它将单独购买的每杯咖啡与附加产品相加。附加产品 ID 为 1444 和 1445。任何帮助或演练将不胜感激!

我正在寻找的结果是......

产品ID TotalAddOn

1451___________ 1

1452___________ 0

1453___________ 0

1461___________ 0

1462___________ 0

1463___________ 0

1471___________ 0

1472___________ 0

1473___________ 0

1481___________ 6

1482___________ 0

1483___________ 0

1491___________ 0

1492___________ 0

1493___________ 2

当然还有更多数据,但是有了给定的数据,这就是结果。

最佳答案

对于每种产品,您似乎想要与订单中其他产品的总数相关的信息。

您可以通过以下方式获取每个订单的信息:

select p.purchaseId, p.productId, sum(o.quantity) as otherQuantity
from MSProducts p join
     MSOrderline o
     on p.PurchaseId = o.PurchaseId and
        p.ProductId <> o.ProductId
group by p.purchaseId, p.productId;

然后,如果您想要每个订单的平均值,这里有一种方法:

select productId, avg(otherQuantity) as avgOthers, count(*) as numOrders
from (select p.purchaseId, p.productId, sum(o.quantity) as otherQuantity
      from MSProducts p join
           MSOrderline o
           on p.PurchaseId = o.PurchaseId and
              p.ProductId <> o.ProductId
      group by p.purchaseId, p.productId
     ) pp
group by productId;

关于mysql - SQL:添加与另一个 ProductID 一起购买的特定 ProductID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43483574/

相关文章:

sql - play20 ebean 生成的 sql 在 postgresql 上抛出语法错误

database - Golang 代码的运行速度真的比 PHP 中的相同代码慢

sql - super 慢的 MySQL - 需要帮助!

php - 如何使用社交网络登录或oAuth?

java - 将对模型元素(jlist)所做的更改更新到 mysql 数据库,问题

mysql - 如何优化我的 MySQL 服务器?

mysql - 根据CustomerID计算总和

sql - PostgreSQL 从 jsonb 中提取 key ,异常 "cannot call jsonb_object_keys on a scalar"

mysql - 如何将面向文档的数据库迁移到mysql

MySql - 通过根据值合并两个表来创建 View