有一個(gè)用戶表User(id, email),一個(gè)付費(fèi)記錄表Transaction (id, transaction_type, transaction_amount), 找出在每個(gè)付費(fèi)類別里,付費(fèi)總額最高的3個(gè)用戶的email 和付費(fèi)總額
2 回答

慕娘9325324
TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
具體語(yǔ)句就不寫了,說(shuō)一下思路。
mysql高版本,支持窗口函數(shù),像這樣的:
row_number over (partition by transaction_type order by amount desc)
然后根據(jù)函數(shù)的返回值<=3,作為過(guò)濾條件
如果不支持的話,mysql有@變量,大概用法如下,需要sql中先按照transaction_type amount排序,判斷transaction_type 和前一個(gè)是否相等,重置@rownum的值。最后按照下面語(yǔ)句中rank的值進(jìn)行過(guò)濾。
用關(guān)鍵詞“mysql row number”搜索,能找到完整的例子。
SELECT t.*, @rownum := @rownum + 1 AS rank FROM YOUR_TABLE t, (SELECT @rownum := 0) r
添加回答
舉報(bào)
0/150
提交
取消