MySQL中利用简单SQL实现开窗函数的分组排序功能

 时间:2024-10-13 04:12:55

1、对原始数据进行排序:原始数据中,数据可能比较杂乱,并未按照一定的逻辑进行排列,故此时需要重新排序。因为要获得各省分类下,各个市的GDP排名,因此选择按照省名、gpd排序。排序前和排序后分别如图所示。

MySQL中利用简单SQL实现开窗函数的分组排序功能
MySQL中利用简单SQL实现开窗函数的分组排序功能

2、增加变量判断省名是否变化:根据需要的最终结果可知,每个省份下的市单独排序,即当省名变化时,排序号也会相应的发生变化。这就告诉我们,需要判断省名的变化。本例中分别采用@tmp作为中间变量,@rank作为排序号。

3、利用变量进行判断并排碌食撞搁序:IF(@tmp=province_name,@rank:=@rank + 1,@rank:=1)则利用中间变量@tmp存储上一条记录的province_name,并和当前的对比,如若相同,则序号@rank增加1,否则初始化@rank为0。@tmp:=province_name则用于将当前的province_name值记录下来,供下一条记录使用。得到排序结果如图。

MySQL中利用简单SQL实现开窗函数的分组排序功能
MySQL中利用简单SQL实现开窗函数的分组排序功能

4、去除中间变量并筛选topN:第三步中的结果不仅有分组排序摒蛲照燔号,还有中间变量tmp。此步骤中主要对tmp过滤并筛选我们需要的topN,本例采用top3。SELECT provinc髫潋啜缅e_name,city_name,gdp,new_rank as rank from(SELECT province_name,city_name,gdp,IF(@tmp=province_name,@rank:=@rank + 1,@rank:=1) as new_rank,@tmp:=province_name as tmp FROM`2016_GDP` aORDER BY province_name,gdp DESC) bwhere new_rank <= 3;最终结果如下。

MySQL中利用简单SQL实现开窗函数的分组排序功能
  • 如何获得追叙之石
  • 原神龙脊雪山七天神像下面的门怎么开
  • 原神遗迹的铭文怎么开启
  • 原神清籁岛每日委托插电战斗方案如何完成?
  • 原神传送点怎么解锁#校园分享#
  • 热门搜索
    环保手抄报资料大全 安全意识手抄报 飞向太空手抄报 文化手抄报 俭以养德手抄报 读书节的手抄报 古诗手抄报图片大全 一年级手抄报大全简单 放飞梦想手抄报图画 心理手抄报