MySQL如何實現Excel分組排序功能?
Excel中分組排序只需要對數據進行升序降序,再利用if函數添加排序序號,即可篩選出分組top數據。
Oracle也有row_number()函數對數據進行分組排序,而MySQL并沒有此類函數,那么如何在MySQL中對數據進行分組排序呢?
下面介紹如何利用用戶變量進行分組排序并取TOP1數據。

1、現在有一份數據表tmp_provice_sales,如下:表格記錄的是某商品省份城市銷售數量,現在需要提取每省份銷售TOP1的城市數據。

2、然后在查詢框中輸入以下代碼:

3、點擊運行,即可獲取每個省份銷售TOP1數據,運行結果如下圖所示:

需要注意的點是:
需對原始數據源銷售額進行降序排序,order by provice ,sales desc,將相同省份數據排列到一起,且按銷售數量由大到小排列;
- 再利用if函數對數據添加序列號;
- 提取各分組中排名為1的數據,即為需求數據;
- 如果要獲取top3數據,只需修改最后一句,having ranks <4 即可。
原始代碼展示如下:
- select a.*,
- if(@v_provice = provice,
- @v_rank:= @v_rank+1,
- @v_rank:=1
- ) as ranks,@v_provice:=provice as provice2
- from
- (select * from tmp_provice_sales
- order by provice ,sales desc)a,
- (select @v_provice:=null,@v_rank:= 0)b
- having ranks=1;
小結
以上就是在mysql中如何實現分組排序的小功能,如果覺得有用,歡迎關注我,每天分享數據小技巧~