鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ 請(qǐng)問(wèn)獲取訂單金額前10的用戶的SQL怎么寫(xiě)?

請(qǐng)問(wèn)獲取訂單金額前10的用戶的SQL怎么寫(xiě)?

有如下兩張示例表

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

請(qǐng)問(wèn)如何通過(guò)SQL語(yǔ)句獲取訂單總金額排前10的用戶?

補(bǔ)充一下:每個(gè)用戶也可能有多個(gè)訂單哦

圖片描述

回答
編輯回答
離殤

如圖

訂單
圖片描述

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;

運(yùn)行結(jié)果:

圖片描述

請(qǐng)參考。

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
編輯回答
獨(dú)特范

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
編輯回答
醉淸風(fēng)

在訂單表 多加個(gè)字段 存儲(chǔ)下訂單總額 適當(dāng)冗余 方便查詢

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

結(jié)合 @如來(lái)神掌 的回答,針對(duì)一個(gè)用戶有可能有多個(gè)訂單的情況,我修改代碼如下,感覺(jué)是可以了....

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