有如下两张示例表
订单金额等于 orderinfo
表里 price*count
,每个订单有多个商品。
请问如何通过SQL语句获取订单总金额排前10的用户?
补充一下:每个用户也可能有多个订单哦
有如下两张示例表
订单金额等于 orderinfo
表里 price*count
,每个订单有多个商品。
请问如何通过SQL语句获取订单总金额排前10的用户?
补充一下:每个用户也可能有多个订单哦
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
select * from usertable where id in
(select o.id from orderinfo as o order by o.price*o.count limit 10)
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
结合 @如来神掌 的回答,针对一个用户有可能有多个订单的情况,我修改代码如下,感觉是可以了....
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;
2 回答1.2k 阅读✓ 已解决
2 回答738 阅读✓ 已解决
1 回答938 阅读✓ 已解决
2 回答803 阅读
1 回答800 阅读
1 回答746 阅读
1 回答743 阅读
如图
订单

orderinfo

执行SQL为:
运行结果:
请参考。