id       班级        成绩
1          a              23
2          b              33
3          c               43
4          a               53
6          b               55
7          c               33

请教1:组外排序,以组为单位排序,并且给序号,以班级为分组
排成
序号     id       班级        成绩
   1        1           a             23
   1        4           a             53
   2        2           b             33
   2        7           b             55
   3        3           c             43
   3        6           c             33

请教2:组内排序
排成
序号     id       班级        成绩
   1        1           a             23
   2        4           a             53
   1        2           b             33
   2        7           b             55
   1        6           c             33
   2        3           c             43

oracle :
第一种(组外排序):

with tmp(id,  班级  , 成绩)as
(select '1','a','23' from dual union all
select '2','b','33' from dual union all
select '3','c','43' from dual union all
select '4','a','53' from dual union all
select '6','b','55' from dual union all
select '7','c','33' from dual)
select sum(r)over(order by rownum) as 序号,id,班级,成绩 from
(select t.*,casewhen lag(班级) over(partition by 班级 order by 成绩) is null then1else0end rfrom tmp t)

具体实例(ps:实际项目中的)

或者使用lag函数

lead () 下一个值

lag() 上一个值

如果lag(t.id) 根据id分组,如果上一条数据id是不相同(空的)(不存在的),那么标号数字位1,否则为0,最后合计为序号。

select sum(r) over(order by rownum) num, f.* from (SELECT t.*,casewhen lag(t.id) over(partition by t.ID order by t.LDATE) is null then1else0end rFROM vb_orders t,vb_orders_chr ocwhere t.id = oc.order_id)  f

第二种(组内排序):

with tmp(id,  班级  , 成绩)as
(select '1','a','23' from dual union all
select '2','b','33' from dual union all
select '3','c','43' from dual union all
select '4','a','53' from dual union all
select '6','b','55' from dual union all
select '7','c','33' from dual)
select row_number() over(partition by 班级 order by 成绩) as 序号, t.*from tmp t

实例:

select row_number() over(partition by c.id order by c.ldate) as 序号, c.*from (SELECT t.*FROM vb_orders t,vb_orders_chr ocwhere t.id = oc.order_id) c

组内排序和组外排序的sql写法相关推荐

  1. mysql 组内排序_mysql组内排序取最大值

    最近业务反馈一个查询异常的问题,需要DBA对查询结果异常给出解释,并帮助他们解决该问题.问题本质是一个组内排序取最大值的问题,根据业务需求,我构建了测试用例 测试用例--建表 create table ...

  2. mysql怎么进行组内排序_MySQL 组内排序

    在开发中经常遇到这样一类需求:取每种类型排名前几的数据.在此我简称它为组内排序. 以下,我借鉴了别人的方法并添加自己的想法,就这类问题做一下理解: 数据准备 CREATE TABLE `test` ( ...

  3. mysql的组内排序生成序号_sql 分组查询,组内排序, 组内添加序号 (SQL Server 排序函数 ROW_NUMBER和RANK 用法总结)...

    下面的例子和SQL语句均在SQL Server 2008环境下运行通过,使用SQL Server自带的AdventureWorks数据库. -- 添加序列号 -- 行号用法: ROW_NUMBER() ...

  4. 如何实现Oracle先组内排序然后再组外排序

    问题描述 工作中遇到一个问题,因为我本人的SQL技术太差了,写了好久,都没有处理好,大概的需求如下,有一个列表,根据一个字段排序,排序后的结果,再根据字段排序. 问题分析 为了让读者能够充分理解这个问 ...

  5. mongodb 聚合 组内排序

    环境 mongodb:3.4 java: 1.7 前言 今天遇到的需求,使得我需要在聚合分组中的组内进行排序. 网上搜索了一番,mongodb并没有组内排序的关键字.好像sql有: 瞬间对mongod ...

  6. sql排序,组内排序

    一.排名 /*普通排名:从1开始,顺序往下排*/ SELECT cs.*,@r :=@r + 1 AS rank FROM cs,(SELECT @r := 0) r ORDER BY score; ...

  7. MySQL组内排序取最大值

    最近业务反馈一个查询异常的问题,需要DBA对查询结果异常给出解释,并帮助他们解决该问题.问题本质是一个组内排序取最大值的问题,根据业务需求,我构建了测试用例 测试用例 --建表 create tabl ...

  8. mysql使用group by实现组内排序实战

    一.前言 需求是:获取用户充值总数最多的前100名,并且获取最新充值的时间和充值数量 分析下: (1)首先是要获取用户充值的总数,然后进行排序取前100: (2)要获取用户的最新一次充值时间和金额,那 ...

  9. mysql分组后组内排名_SQL实现group by 分组后组内排序

    在一个月黑风高的夜晚,自己无聊学习的SQL的时候,练习,突发奇想的想实现一个功能查询,一张成绩表有如下字段,班级ID,英语成绩,数据成绩,语文成绩如下图 实现 查询出 每个班级英语成绩最高的前两名的记 ...

最新文章

  1. uvalive3209City Game
  2. varnish性能调优
  3. Servlet 异常处理
  4. [分布式]事务处理的常见方法
  5. Java中的string定义的两种方法和区别
  6. python3中numpy函数tile的用法
  7. JS的parseFloat
  8. 干!一张图整理了 Python 所有内置异常
  9. Vue学习(组件传参)-学习笔记
  10. IM设计思考:XMPP多用户文本聊天协议(MUC:Multi User Chat)
  11. Silverlight 山寨版样式浏览器
  12. html表单传值,如何将用户输入的表单值从html传递给javascript?
  13. c语言程序设计课程设计学生信息管理系统,C语言程序设计课程设计报告----学生信息管理系统.doc...
  14. 数字资产价值巨大,GMQGroup深入布局挖掘数字财富
  15. 没有月亮的中秋,有CCNP伴我度过!
  16. Windows的Git Bash使用tree命令
  17. 【持续更新】MARL 算法汇总
  18. tp5第三方支付-支付宝
  19. “颠覆”——物联网 + 大数据 + 云计算+ 网络互连
  20. 点击vue页面链接打开本地exe文件

热门文章

  1. 记录参加CSDN上海大联欢活动
  2. jsonobject json对象里面_JSONObject 的使用
  3. 前端人必看的JS面试题汇总
  4. 软件测试35岁中年危机,如何改行,你首先想到的是做什么?
  5. 记录一次瑞芯微rk3128固件解包打包过程:以添加root权限为例
  6. 线性表的链式存储结构及代码实现(单链表,双链表,循环链表)
  7. python opencv vscode 增加自动补全 auto completement
  8. php滚动条代码,CSS_给DIV添加滚动条的实现代码,直接为div指定overflow属性为auto - phpStudy...
  9. 删除excel中的空白区域,增加滚动条长度
  10. css实现超有趣的熊猫登录界面