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

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