为了账号安全,请及时绑定邮箱和手机立即绑定

请问获取订单金额前10的用户的SQL怎么写?

请问获取订单金额前10的用户的SQL怎么写?

PHP
森林海 2019-03-18 15:32:35
有如下两张示例表 订单金额等于 orderinfo 表里 price*count,每个订单有多个商品。 请问如何通过SQL语句获取订单总金额排前10的用户? 补充一下:每个用户也可能有多个订单哦
查看完整描述

6 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

select userid from order a left join (select * from (select orderid,sum(price*count) as money from orderinfo group by orderid) order by money desc limit 10) b on a.id = b.orderid

查看完整回答
反对 回复 2019-03-18
?
隔江千里

TA贡献1906条经验 获得超10个赞

select * from usertable where id in
(select o.id from orderinfo as o order by o.price*o.count limit 10)

查看完整回答
反对 回复 2019-03-18
?
慕容708150

TA贡献1831条经验 获得超4个赞

select a.user_id from order as a INNER JOIN order_info as b ON a.id=b.orderid ORDER BY(b.price*b.count) desc limit 10

查看完整回答
反对 回复 2019-03-18
?
holdtom

TA贡献1805条经验 获得超10个赞

结合 @如来神掌 的回答,针对一个用户有可能有多个订单的情况,我修改代码如下,感觉是可以了....

SELECT sum(b.total),userid FROM `order` AS a,
(SELECT SUM(price*count) AS total,orderid 
FROM `orderinfo`
GROUP BY `orderid`) AS b
WHERE a.`id` = b.`orderid`
GROUP BY a.`userid`
ORDER BY sum(b.`total`) DESC
limit 10;
查看完整回答
反对 回复 2019-03-18
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

在订单表 多加个字段 存储下订单总额 适当冗余 方便查询

查看完整回答
反对 回复 2019-03-18
  • 6 回答
  • 0 关注
  • 1457 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信