基于销售额的十大产品列表

时间:2016-09-09 15:39:34

标签: sql postgresql

我想为这个问题编写一个最佳的sql查询,只是想知道是否有更好的解决方案,或者这将是最好的解决方案。请分享您对此的看法。感谢。

SELECT * FROM
(
SELECT product_id,ROW_NUMBER() OVER ( ORDER BY SUM( quantity*price) DESC ) AS rownum
  FROM orders
GROUP BY product_id  
)
WHERE rownum <= 10;

2 个答案:

答案 0 :(得分:1)

我希望Postgres中最快的是:

SELECT product_id
FROM orders
GROUP BY product_id  
ORDER BY SUM(quantity*price) DESC
LIMIT 10;

但是,我希望这只比你的查询快一点。大部分工作是汇总每个产品的订单,我认为任何查询都需要这样做。

答案 1 :(得分:0)

您的查询将提供最佳效果。我试图将它与下面的简单查询进行比较,并且两个查询要么花费相同的时间,要么查询表现更好。现在其他物理设计参数可能会影响实际环境。

select top 10 product_id, SUM( quantity*price) from orders group by product_id
order by SUM( quantity*price) desc