ZBLOG

mysql 查询先分组再从每个分组中的前10

可以使用子查询和JOIN来实现先分组再从每个分组中取前10条记录。

例如,假设有一个表格orders,其中包含订单号、客户姓名和订单金额三列,要查询每个客户的订单金额最高的前3笔订单:

SELECT o1.*
FROM orders AS o1
JOIN (
  SELECT customer, MAX(amount) AS max_amount
  FROM orders
  GROUP BY customer
) AS o2
ON o1.customer = o2.customer AND o1.amount >= o2.max_amount - 9
ORDER BY customer, amount DESC;

这里首先在子查询中按照客户分组,并求出每个分组中的最大订单金额,然后将结果与原始表格进行JOIN操作,筛选出每个客户的前10笔订单。注意,在确定每个分组中的前N条记录时,需要对max_amount减去N-1得到一个区间值,并将其作为o1.amount与o2.max_amount进行比较。同时,在ORDER BY子句中需要按照customer和amount两列进行排序。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4885

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?