亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL 每個分類的前三個數據

SQL 每個分類的前三個數據

HUX布斯 2018-08-05 13:59:17
有一個用戶表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


查看完整回答
反對 回復 2018-08-09
  • 2 回答
  • 0 關注
  • 1098 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號