好的,我有一个包含这些表的数据库:
Products (ID, Producer, Name)
Producers (ID, Name)
ProductTypes (ID, Name)
ProductTypeJunction (ID, ProductID, ProductTypeID)
Transactions (ID, ProductID, Profit)
基本上,我在产品和产品类型之间存在多对多的关系,每个产品都有一个生产者。我还列出了每笔交易的清单(销售的产品)以及它赚了多少钱。
现在我需要能够做到这一点:
列出生产超过1000美元至少一种特定产品类型的生产商,这意味着它必须至少从汽车类型或家具类型中赚取1000美元。如果从多种产品类型的销售额中总计超过1000,则无关紧要。至少有一种类型必须有1000个。
似乎没有任何方法可以通过我尝试的任何SQL功能来实现这一目标。
答案 0 :(得分:1)
您只需将group by
与having
一起使用即可:
select
ProducerName = pro.Name
, TypeName = pt.Name
, Profit = sum(t.Profit)
from Producers pro
inner join Products p
on pro.Id = p.Producer
inner join ProductTypesJunction ptj
on ptj.ProductId = p.Id
inner join ProductTypes pt
on pt.Id = ptj.ProductTypeId
inner join Transactions t
on t.ProductId = p.Id
group by
pro.Name
, pt.Name
having sum(t.Profit)>=1000;