【问题标题】:How can I display top 3 products with its price and arrange by average prices?如何显示前 3 名产品及其价格并按平均价格排列?
【发布时间】:2022-01-26 00:05:19
【问题描述】:

我在 products 表中有这个记录,其中包含 product_id 及其价格

product_id price
1 150
1 190
2 20
2 12
3 123
4 513
5 157
5 147

我想获得前 3 名的产品并按平均价格排列它

product_id price avg_price
4 513 513
1 150 170
1 190 170
5 157 152
5 147 152

如何在 sql 查询或 laravel eloquent 查询中编写/编码?

【问题讨论】:

  • 您希望前3名是平均价格最高的产品还是前3名的常见产品?
  • 感谢您的回复。您的问题中的任何一个都不是我要问的,我想显示前 3 种产品并按计算的平均价格对其进行排列。
  • 但是是什么让某样东西成为“顶级”产品?
  • 谢谢你的回复,已经回答了:) @ysth

标签: mysql sql laravel eloquent laravel-8


【解决方案1】:
WITH AverageCTE AS
(
    SELECT product_id, AVG(avg_price) as avg_price 
    FROM products
    GROUP BY product_id
)

SELECT p.product_id, price, avg_price
FROM product p JOIN 
(SELECT * FROM AverageCTE ORDER BY avg_price DESC LIMIT 3) a 
    on p.product_id = a.product_id
ORDER BY avg_price DESC

【讨论】:

  • @PeterParker 不客气的小蜘蛛
  • 此代码有效!谢谢@YuriyFaktorovich 先生
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 2017-11-24
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
相关资源
最近更新 更多