row_number() 仅仅是价格排序字段

select @rownum := @rownum + 1 as rn, t.*from (select @rownum := 0) r, test_table tselect
@rank:=@rank+1 as rank
,t.*
from (select @rank:=0) r, DM_GOA.dm_goa_fin_inv_mly_d  t;

解释:给test_table里的数据设置行号, rn是行号

row_number() over(partition by)

select if(@uid = t.user_id and @cid = t.city_id,@rank := @rank + 1,@rank := 1) as rank,t.*,@uid := t.user_id,@cid := t.city_idfrom (select @uid := null, @cid := null, @rank := 0) r,(select user_id, city_id, city_name, idfrom t_user_cityorder by user_id, city_id, id) t;

解释:对t_user_city表按照user_id,city_id两个字段做分组设置行号,rank是分组的行号,order by里一定要有两个分组字段及第三个排序字,上面if 也可以用case when

SELECT *FROM (SELECTF.PARTY_ID AS PARTY_ID,F.ALL_COUNT AS ALL_COUNT,F.SU AS SU,CASEWHEN @PARTY_ID != PARTY_ID THEN@ROWNUM := 1ELSE@ROWNUM := @ROWNUM + 1END AS ROWNUM,@PARTY_ID := PARTY_ID AS PARTY_ID12FROM (SELECT @F.PARTY_ID := “”) c,(SELECT @ROWNUM := 0) r,(SELECTE.PARTY_ID AS PARTY_ID,E.SU AS SU,E.ALL_COUNT AS ALL_COUNTFROM (SELECTc.PARTY_ID AS PARTY_ID,COUNT(*) AS SU, d.AMT AS ALL_COUNT   FROM dpf_ckaccno_dtl d      JOIN dpf_ckaccno cON d.ACC_NO = c.DM01ACCTWHERE  d.CRDFLG = ‘D’GROUP BY c.PARTY_ID, d.AMT) EORDER BY E.PARTY_ID,E.SU DESC,E.ALL_COUNT DESC) F) GWHERE G.ROWNUM <= 3

说明:1、(SELECT @ROWNUM := 0)r 用于定义变量并初始化,后面是命别名,此处不能省略,不然会报错。

2、 @PARTY_ID := PARTY_ID AS PARTY_ID12 此处是把当前行值赋值给PARTY_ID 变量,前面(SELECT @F.PARTY_ID := “”) c,已经将其初始化为空串

3、CASE

WHEN @PARTY_ID != PARTY_ID THEN

@ROWNUM := 1

ELSE

@ROWNUM :=@ROWNUM + 1

END AS ROWNUM, – 此处通过case when 条件句来判断变量值与当前PARTY_ID是否相等来,不等说明是新的PARTY_ID,ROWNUM 就为1,否则就+1

4、通过这个sql,我们可以发现mysql在sql语句中使用变量时,初始化的东西放到from语句的后面,使变量的变化语句要放到查询结果里面,这里的原因可能是跟数据库管理系统解析一个sql的顺序有关系

F.PARTY_ID AS PARTY_ID,
         F.ALL_COUNT AS ALL_COUNT,
         F.SU AS SU,

PARTY_ID        ALL_COUNT   SU  ROW_NUM   PARTY_ID_12

102902                 5000            18           1                      102902

102902                 2000            18           2                      102902

102902                 2                   18          3                      102902

104631                 4900             12          1                      104631

104631                 500               12           2                     104631

104631                 2000              6            3                     104631

104658                 5000            192            1                     104658

104658                 2000            126            2                     104658

104658                 1000              48            3                     104658

mysql实现row_number()和row_number() over(partition by)相关推荐

  1. mysql 排序num_MySQL 实现row_number() 分组排序功能

    数据库基本脚本 CREATE TABLE `a` ( `ID` INT(10) NULL DEFAULT NULL, `class` INT(10) NULL DEFAULT NULL, `score ...

  2. mysql稠化报表_Oracle使用PARTITION BY 实现数据稠化报表

    所谓的数据稠化,就是补全缺失的数据.因为在数据库表中,存储的数据经常是稀疏的(sparse data),也就是不完整的.比如记录一个员工每个月的销售额,用这么一个销售表来记录:SalesRecord( ...

  3. MySQL 分类排名(并列、不并列),分组TOP N,ROW_NUMBER()函数

    目录 表结构 题目一:获取每个科目下前五成绩排名(允许并列) 分析: 题目二:获取每个科目下最后两名学生的成绩平均值 分析: 题目三:获取每个科目下前五成绩排名(不允许并列) 分析: ROW_NUMB ...

  4. MySQL ROW_NUMBER 函数

    MySQL ROW_NUMBER()函数 为结果集中的每一行生成序列号 MySQL ROW_NUMBER()从8.0版开始引入了功能.这ROW_NUMBER()是一个窗口函数或分析函数,它为从1开始应 ...

  5. Hive之窗口函数(partition) / order by / row_number / date_sub 等函数联合使用案例(9)

    案例1:求出连续销售3天的店铺 一   数据源 ,将数据源(结构化数据)导入到本地一个新建的文件中 数据源 : name,ctime, cost a,2020-02-10,600 a,2020-03- ...

  6. row number函数 oracle,oracle函数 ROW_NUMBER()

    [语法]ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) [功能]表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后 ...

  7. sql 窗口函数ROW_NUMBER() 分组/排序/计数

    ROW_NUMBER() 窗口函数 / 分析函数 MySQL中,row_number() 函数 用来分区的,使用它 为返回的结果集中的每一行 生成一个序列号(为行分配序号),第一个数字以1开头. 主要 ...

  8. SQL 查询 每个班级第n名 每组第n个 区分 分区 分组排序 DENSE_RANK() RANK() ROW_NUMBER()

    背景 区分/分区/分组排序: 区分多组有序数据中的部分特典数据: 适用场景 前提:有序数据 查询 每组 前N.第N.后N个记录: 排序编号: 分页: 案例(一瓢饮):每个班级第n名 ,有下表(伪数据) ...

  9. [转]oracle分析函数Rank, Dense_rank, row_number

    oracle分析函数Rank, Dense_rank, row_number 分析函数2(Rank, Dense_rank, row_number)   目录 ==================== ...

最新文章

  1. unity 程序win7在进程里运行_Win7系统中unity web player是什么程序
  2. VMware中安装CentOS Linux release 7.4.1708 (Core)
  3. PuTTY 设置Serial(ubuntu)
  4. Java:反射+泛型:获取类型参数的实例
  5. 自动化测试之Appium模拟机测试
  6. python执行txt中代码_【技术分享】文件解压之过 Python中的代码执行
  7. 让kbmmw 4.8 支持ios 64
  8. 暴力破解西电校园网密码
  9. linux调整刷新率,在Linux操作系统下调整屏幕刷新率的方法
  10. phpcms搜索功能实现
  11. 赛门铁克未署名诺顿安全更新 防火墙警报引混乱
  12. Visual Studio Code修改字体大小
  13. 解决eclipse出现This Android SDK requires Andro...date ADT to the latest version.问题
  14. 玩转Mixly – 10、Arduino AVR编程 之 传感器,执行器,通信,存储,factory
  15. 灯丝LED灯泡的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 常州信息职业技术学院计算机清考,常州信息职业技术学院教务处:http://jwc.ccit.js.cn/...
  17. 【canvas 背景色】透明背景转换成白色
  18. Matlab数模笔记(9)--排队模型
  19. 序列(sequence)
  20. 龙芯2k按键中断驱动_龙芯2k1000的中断设计

热门文章

  1. JSP第六次课:数据库访问显示商品信息
  2. yellow weasel
  3. 一个关于js所有函数都报错的问题
  4. c语言enum能自定义吗,18、C语言 —— 枚举enum
  5. C语言 —— 预定义符号__FILE____LINE___func__(编写调试函数printf , debug)
  6. jmeter插件 --PerfMon Metrics Collector监控工具的使用
  7. [Web API] 如何让 Web API 统一回传格式以及例外处理[转]
  8. (转)HTTP 协议之压缩
  9. 多个反斜杠的消除处理
  10. 使用GPS实时记录运动路线