首页 > 解决方案 > 如何用sql查找销量最高的产品的收益?

问题描述

我有两张桌子:

表“产品”

表“订单”

我需要找到销量最高的产品名称以及从中获得的收益。

我写的代码:

SELECT * 
FROM Products 
WHERE ProductId = (SELECT ProductId
                   FROM 
                       (SELECT 
                            ProductId, 
                            SUM(Quantity) AS total_order,
                            MAX(SUM(Quantity)) OVER () AS maxSm 
                        FROM
                            Orders
                        GROUP BY
                            ProductId)
                   WHERE 
                        total_order = maxSm)

但是有了这个,我只找到了销量最高的产品名称。你能告诉我,我怎样才能找到这个产品的收益?

标签: sqlsqlitemaxproduct

解决方案


您需要将派生表的结果连接到您的Products表中。

如果没有实际的样本数据,我无法测试,但是以下应该是您需要的,或者至少非常接近:

select p.Name, o.total_order, o.total_order * p.Price as TotalValue
from (
    select * from (
        select ProductId, 
            Sum(Quantity) as total_order, 
            Max(Sum(Quantity)) over () as maxSm 
        from Orders
        group byProductId
    )t
    where total_order = maxSm
)o join Products p on p.ProductId=o.ProductId

推荐阅读