我有以下表格:
PRODUCT ( ProdId, Name, Price, Weight, Category, Description, … )
DETAIL ( OrdId, ProdId, Qty, … )
ORDER ( OrdId, ClientId, Amount, OrdDate, DeliveryDate, ChosenStoreId, … )
并且我必须用简单的文字(例如,向非程序员)描述以下查询在做什么:
select * from Order O
where Amount < 0.95 * ( select sum( Qty * Price ) from Product natural join Detail
where OrderId = O.OrderId )
我最初的回答是,它显示的订单金额最低,仅为订单的5%,但被标记为不正确。
我的另一个想法可能是折扣,但是练习说明中没有提及折扣,因此我猜它也是不正确的。
谁能告诉我该查询在做什么?提前致谢。
注意:除了表格以外,这是我查询所需的所有相关信息。
Re Gordon我也不同意natural join
。该查询似乎是有意的,特别是因为没有示例数据。一个好的策略是用更通用的语法写出SQL并进行推断,请参见下文:
select o.OrdId,
sum(o.Amount) Amount,
sum(d.Qty * p.Price) QtyPrice
from Order as o
left join Detail as d on d.OrdId = o.OrdId
left join Product as p on p.ProdId = d.ProdId
group by o.OrdId
having sum(o.Amount) < (0.95 * sum(d.Qty * p.Price))
对我来说,此查询返回
就像您说的那样,这可能是折扣跟踪器,或者o.Amount
字段是独立于Detail
和Product
表填充的,并且显示任何错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句