鍍金池/ 問答/PHP  數(shù)據(jù)庫/ 請問獲取訂單金額前10的用戶的SQL怎么寫?

請問獲取訂單金額前10的用戶的SQL怎么寫?

有如下兩張示例表

訂單金額等于 orderinfo 表里 price*count,每個訂單有多個商品。

請問如何通過SQL語句獲取訂單總金額排前10的用戶?

補充一下:每個用戶也可能有多個訂單哦

圖片描述

回答
編輯回答
離殤

如圖

訂單
圖片描述

orderinfo
圖片描述

執(zhí)行SQL為:

select sum(a.price * a.count) as total, a.order_id, b.user_id 
from `orderinfo` as a, `order` as b 
where a.order_id=b.id 
group by a.order_id
order by total DESC 
limit 10;

運行結果:

圖片描述

請參考。

2018年1月25日 03:44
編輯回答
舊言

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

2018年3月19日 06:35
編輯回答
獨特范

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

2017年11月21日 11:40
編輯回答
不歸路

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

2017年12月11日 17:08
編輯回答
醉淸風

在訂單表 多加個字段 存儲下訂單總額 適當冗余 方便查詢

2017年9月20日 15:37
編輯回答
葬憶

結合 @如來神掌 的回答,針對一個用戶有可能有多個訂單的情況,我修改代碼如下,感覺是可以了....

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;
2017年1月15日 10:01