SELECT * FROM(
select ROW_NUMBER() over(partition BY sid order by cscore desc) as tid,sid,cname,cscore FROM dbo.aright
) A WHERE tid=1

注:row_number() 和 partition by order by 来实现 组内排序

 例:

SELECT * FROM(
SELECT ROW_NUMBER() OVER(PARTITION BY R.sid ORDER BY cscore desc) rowid,L.sid,L.sname,R.cname,R.cscore FROM dbo.aleft L, dbo.aright R WHERE L.sid=R.sid
) A WHERE A.rowid=1

 结果 

 另外可以用CROSS APPLY实现:

SELECT L.*,C.cname,c.cscore FROM dbo.aleft L CROSS APPLY (
SELECT TOP 1 * FROM dbo.aright R WHERE r.sid=l.sid ORDER BY R.cscore DESC
) AS C

结果相同。

cross Apply 语法可以看:

http://www.cnblogs.com/Leo_wl/archive/2013/04/02/2997012.html

 借例子看下以下分组汇总:

SELECT L.sname,R.cname,SUM(R.cscore) FROM dbo.aleft L, dbo.aright R WHERE L.sid=R.sid GROUP BY L.sname,R.cname WITH CUBE

CUBE 生成的结果集显示了所选列中值的所有组合的聚合

本例中,所有组合被解释为:sname、cname的分组。

SQL ROW_NUMBER()实现取组内最新(最大)的数据的更多相关文章

  1. MYSQL实现分组排序并取组内第一条数据

    一.需要实现分组排序并且取组内状态优先级最高的数据 有一张这样的数据表, 需求是根据error_type分组然后取status最小的第一条数据 第一种写法: select t.* from ( sel ...

  2. [SQL]用于提取组内最新数据,左连接,内连接,not exist三种方案中,到底谁最快?

    本作代码下载:https://files.cnblogs.com/files/xiandedanteng/LeftInnerNotExist20191222.rar 人们总是喜欢给出或是得到一个简单明 ...

  3. SQL一对多取子表最新记录的所有字段(ROW_NUMBER()OVER()函数的应用)

    ROW_NUMBER()OVER() 参数1:分组字段 PARTITION BY   ..,..,....  可选 参数2:排序字段 ORDER BY .. DESC  必须 实例: 根据Confir ...

  4. mysql 分组后取每个组内最新的一条数据

    首先,将按条件查询并排序的结果查询出来. mysql order by accepttime desc; +---------------------+------+-----+ | acceptti ...

  5. MySQL实现分组取组内特定数据的功能

    需求:在MySQL5.7环境下,查询下面表中,各个学科前两名的学生的成绩: 1.准备数据 窗机表以及向表中插入数据 创建一张表: DROP TABLE IF EXISTS `grade`; CREAT ...

  6. 基于mysql实现group by取各分组最新一条数据

    准备数据 SQL语句 SELECT * FROM admin WHERE id IN ( SELECT MAX( id ) FROM admin GROUP BY order_id ); 查询结果:

  7. group by分组后对组内数据进行排序

    查询 每个班级英语成绩最高的前两名的记录 原文:https://www.cnblogs.com/hxfcodelife/p/10226934.html select a.Classid,a.Engli ...

  8. SQL分组排序后取每组最新一条数据的另一种思路

    在hibernate框架和mysql.oracle两种数据库兼容的项目中实现查询每个id最新更新的一条数据. 之前工作中一直用的mybatis+oracle数据库这种,一般写这类分组排序取每组最新一条 ...

  9. 在论坛中出现的比较难的sql问题:29(row_number函数 组内某列的值连续出现3次标记出来)

    原文:在论坛中出现的比较难的sql问题:29(row_number函数 组内某列的值连续出现3次标记出来) 在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘 ...

随机推荐

  1. Hadoop总结篇之三---一个Job到底被提交到哪去了

    我们会定义Job,我们会定义map和reduce程序.那么,这个Job到底是怎么提交的?提交到哪去了?它到底和集群怎么进行交互的呢? 这篇文章将从头讲起. 开发hadoop的程序时,一共有三大块,也就 ...

  2. How Garbage Collection Really Works

    Java Memory Management, with its built-in garbage collection, is one of the language's finest achiev ...

  3. git学习3:远程仓库

    Git是分布式版本控制系统,同一个git仓库,可以分布到不同的机器上,那么需要有一台机器上有一个原始版本库,这样别的机器可以克隆这个原始版本库,那么这台机器就是github. 1,创建SSH Key. ...

  4. dos笔记

    MS DOS 命令大全 一.基础命令 1 dir 无参数:查看当前所在目录的文件和文件夹. /s:查看当前目录已经其所有子目录的文件和文件夹. /a:查看包括隐含文件的所有文件. /ah:只显示出隐含 ...

  5. "\r\n","\r","\n"

    参考: http://blog.csdn.net/xiaofei2010/article/details/8458605 '\r' : 回车符 '\n' : 换行符 以下是c++语言的测试代码, 跟平 ...

  6. fdfdfdfdfdfdfdfdfdfdfd

    len := Length( Face[integer(FaceType)][Line-1] );  SetLength( Face[integer(FaceType)][Line-1], Len+1 ...

  7. DMA控制

    1.S3C6410中DMA操作步骤 S3C6410中DMA操作步骤:1.决定使用安全DMAC(SDMAC)还是通用DMAC(DMAC):2.开始相应DMAC的系统时钟,并关闭另外一组的时钟(系统默认开 ...

  8. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  9. cs11_c++_lab6

    expressions.hh #ifndef EXPRESSIONS_HH #define EXPRESSIONS_HH #include "environment.hh" #in ...

  10. Sql Server 按行处理表数据思路

    SqlServer的游标当超过1000行左右的时候效率极其低下. DECLARE @Company VARCHAR(12)='' SELECT TOP 1 @Company=CompanyID FRO ...