MySQL對列排序,分組排序

2021-08-10 19:58:52 字數 1110 閱讀 7735

首先試一下,簡單的排序,類似於for迴圈,直接累加,即賦初值,累加。賦初值,

@i := 0,累加

@i := @i + 1。

具體的sql如下

如上,將查詢結果進行排序從1到10

然後試一下分組排序

當用group by的時候,需要按照分組的列比較排序,當按照分組時候,如果分組資料相同那麼序號累加,當分組資料不相同的時候,重新累加。

select (@i := case  when @pre_keyword=keyword then @i + 1 else 1 end) rownum,b.*, @pre_keyword:=keyword from (   

selectt.spdf_path,doc_id,page,keyword,t.times from sign_record t group by id order bykeyword

) b,(select  @i := 0, @pre_keyword:='') as a;

如上sql,分組列是keyword

1、 初始化"序號列"@i,"分組變化標記列"@pre_keyword,select  @i:= 0, @pre_keyword:=''

2、 "分組變化標記列"賦值為分組列,@pre_keyword:=keyword

3、 判斷條件,累加還是重新計算,@i := case when @pre_keyword=keyword then@i + 1 else 1 end,如果"分組變化標記列"等於分組列,序號累加,否則說明是新的一組,"序號列"賦值1

如上,根據關鍵字分成了四組,然後有四次排序。

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...

Mysql實現分組排序

資料 studenno studentname classno classname 2018140101 張三1401 14級一班 2018140111 孫一1402 14級二班 2018140121 李二1402 14級二班 2018140102 錢一1401 14級一班 2018140104 趙...