有如下两张示例表
订单金额等于 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

隔江千里
TA贡献1906条经验 获得超10个赞
select * from usertable where id in
(select o.id from orderinfo as o order by o.price*o.count limit 10)

慕容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

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;
- 6 回答
- 0 关注
- 1525 浏览
添加回答
举报
0/150
提交
取消