我想为这个问题编写一个最佳的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;
答案 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