mysql mysql分組排序

2021-10-19 10:50:14 字數 1036 閱讀 1453

參考:

說明:關鍵在於@pdept如何賦值。了解@pdept的賦值之後,立馬就能明白rank(名次)的由來。

create table yida_sts.temp_hlq_user_sold_03 as  

select

user_id

,buyer_fullname

,buyer_phone_number

,buyer_email

,sale_date

,buy_times

,sum_price

,sku

,model

,rank

from (

select b.*

-- 行號

,@rownum:=@rownum+1

-- 處理排名,如果@pdept等於user_id,則表示@pdept被初始化,將@rank自增1

,if(@pdept=b.user_id and @pdept2=b.buyer_fullname,@rank:=@rank+1,@rank:=1) as rank

-- 初始化@pdept,@pdept為中間變數,在rank之後初始化,所以rank初始化時

-- @pdept為null或者是上一user_id的值

,@pdept:=b.user_id

,@pdept2:=b.buyer_fullname

from (

select a.*

from temp_hlq_user_sold_02 a

order by user_id asc,buyer_fullname asc ,buyer_phone_number asc,

buyer_email asc,sale_date desc

) b

-- 初始化資訊表

,(select @rownum :=0 , @pdept := null ,@pdept2 := null,@rank:=0) c

) result

;

SQL分組排序

不得不承認,我腦子梗塞的很嚴重。表 gcc bloginfo blogid uid blogtitle createtime issketch checkright 1 1 hello 2010 04 01 2 1 2 1 hello2 2010 04 02 2 1 3 1 hello3 2010 ...

mysql分組排序

sql的分組排序是乙個難點,在leetcode中是乙個hard級別的題目。筆者這兩天在工作中遇到了這麼乙個需求。取過去一段時間範圍內銷量前500的商品,然後取每個商品裡面銷量最高的sku,一共500個sku。取銷量前500的商品好求,但是這500對應的最高的sku不太容易,需要用到分組排序。筆者在工...

MySQL分組排序

emp資料表建表語句 create table emp empno int,ename varchar 40 job varchar 40 mgr int,hiredate varchar 40 sal double,comm int,deptno int 插入資料準備 insert into em...