怎么循序渐进写出分组排名

1.如下图,有两个班,分别是四个人,每个班都有2名学渣,2个学霸

2.利用row_number() 函数 对两个班级进行排名,如下图

3.查出每个班级前三名的同学,正好利用上图的rank,观察到上图的rank 就是每个人在自己班级的名次,所以在外面包裹一层 在条件查询就可以了

附上sql语句:

WITH cte
     AS (SELECT ‘一班‘ 班级, ‘张三‘ 姓名, 12 成绩
         UNION ALL
         SELECT ‘一班‘ 班级, ‘张四‘ 姓名, 24 成绩
         UNION ALL
         SELECT ‘二班‘ 班级, ‘张五‘ 姓, 38 成绩
         UNION ALL
         SELECT ‘二班‘ 班级, ‘张六‘ 姓名, 98 成绩
         UNION ALL
         SELECT ‘二班‘ 班级, ‘张七‘ 姓名, 45 成绩
         UNION ALL
         SELECT ‘一班‘ 班级, ‘张八‘ 姓名, 87 成绩
         UNION ALL
         SELECT ‘二班‘ 班级, ‘张九‘ 姓名, 95 成绩
         UNION ALL
         SELECT ‘一班‘ 班级, ‘张十‘ 姓名, 88 成绩)
--SELECT *  FROM cte order by [班级] desc
select a.* from (
select row_number() over(PARTITION by [班级] order by [成绩] desc ) rank,* from cte ) a
where a.rank<=3 order by 班级 desc,rank asc
时间: 2024-10-09 14:33:39

怎么循序渐进写出分组排名的相关文章

三大技巧,有助运营写出吸引读者的文案

对于互联网运营而言,好的文案,是导流的直接影响因素,也是产品推广成功的前提. 关于文案,作为运营,几乎每天工作上都有接触,甚至,谁都可以来几句. 很多人对文案都有一种误解,比如: . 产品说,就这几行字,马上写给我吧: . 技术说,运营好闲啊,写几十上百个字就说完成一项工作了: . 领导说,就这么几句话,你还写了一天就写成这样-- 以上场景,是我意淫出来的,为了更好地引出主题.如有雷同,纯属巧合. 随着互联网经济的发展,用户对于产品有了越来越多的选择.而伴随着需求的多样化,用户的要求也在不断的提

如何写出高性能的.net程序

本文是一个小工作总结. 总结这么久的性能优化经验. 有一次电话面试, 面试官说我简历里提到了性能优化, 他问我性能优化有什么章法吗?给他说说. 我当时真迷糊了. 真的,做了这么久的性能优化还真不知道性能优化有什么章法. 一直是自己凭感觉乱弄, 运气比较好, 还真的可以弄到点子上, 运行时间急剧缩短. 一提起优化, 大家第一反应就是算法. 不过说来惭愧, 我这种懒人, 对算法最一头雾水了, 算法导论买回来看了前几页就扔那压东西了, 现在好像还丢了. 不知道哪次搬家弄没了. 所以本文的主要核心就是如

循序渐进写程序

[来信] 老师,我现在是初学编程,感觉自己的编程能力比较弱,如果做一道算法题,有时候需要两三个小时,做出来之后还没有答案上给的算法好,应该是练习比较少,我是应该多看别人写好的算法,然后多敲代码好呢,还是尽量自己写,写不出来再看答案好呢(感觉自己写好浪费时间) [回复] 我们的学习,要讲究循序渐进.你出现这种情况,应该是做的题目中,包含了太多对你而言是"新知识"的内容,以致于感觉太难,直接影响了学习感受.甚至有可能是非程序设计和算法的知识部分的原因,如编程环境的使用不熟悉,阻碍了你的学习

如何使用正则表达式写出高效率的GREP

正则表达式可追溯到科学家对人类神经系统工作原理的早期研究.是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 作用: 1. 给定的字符串是否符合正则表达式的匹配 2. 可以通过正则表达式,从字符串中获取我们想要的特定部分. 特点: 1. 灵活性.逻辑性和功能性非常的强: 2. 可以迅速地用极简单的方式达到字符串的复杂控制. 3. 对于刚接触的人来说,比较晦涩难

震惊!一蒟蒻竟然写出fhqTreap

震惊,我竟然写出了fhq Treap 先%fhq大佬 然后%zxy大佬 节点定义 struct node { int w,siz,rdm;//权值,大小(包括自己),随机数 int l,r;//左右儿子 } nd[MAXN]; 特有操作 fhq Treap也被叫做无旋Treap,它通过分裂与合并来维持平衡和堆的性质. 按值分裂 将树分成x,y两颗树,其中x中的元素都小于等于w,y中的元素都大于w. 按地址传参,调用后x,y为新树的根. 开始写的传指针,但我太弱了一直没写对 void splitV

只用这 6 个字符,就可以写出任意 JavaScript 代码!

你可能在网上见过有人用 几个不同的字符写的各种稀奇古怪的 JavaScript 代码,虽然看起来奇怪,但是能正常运行!比如这个: (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 复制代码 你猜运行结果是什么?你可以自己去控制台试一下. 看起来很神奇,但这到底是怎么回事呢? 事实上,你几乎可以用下面这 6 个字符写出任意的 JavaScript 程序: []()!+ 复制代码 很多人都知道这个技巧,但是没

【技能】使用纯CSS+html写出方向箭头,简单大方,好看

使用纯CSS+html写出方向箭头,贴出来就可以用,100%原创 <html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <style type="text/css"> .pointsRule{ display: inline-blo

我的Java历程_写出这个数

lzJava基础进行中,今天偶然间看到的一个题目: 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字.如下代码: import java.util.*;public class Main2{ public static void main(String[] args){ String[] date = {"Ling", "Yi", "Er", "San", "Si", "Wu&q

代码示例:一些简单技巧优化JavaScript编译器工作详解,让你写出高性能运行的更快JavaScript代码

告诉你一些简单的技巧来优化JavaScript编译器工作,从而让你的JavaScript代码运行的更快.尤其是在你游戏中发现帧率下降或是当垃圾回收器有大量的工作要完成的时候. 单一同态: 当你定义了一个两个参数的函数,编译器会接受你的定义,如果函数参数的类型.个数或者返回值的类型改变编译器的工作会变得艰难.通常情况下,单一同态的数据结构和个数相同的参数会让你的程序会更好的工作. function example(a, b) { // 期望a,b都为数值类型 console.log(++a * +