关于sql语句 先分组再排序然后取每组的第一条数据

select  ranked.等待时间 from
(
select *, ROW_NUMBER() over(partition by tb.PATIENT_ID order by tb.等待时间 ASC) as rowNum
from (select a.PATIENT_ID as PATIENT_ID, DATEDIFF(HOUR,b.ADMISSION_DATE, a.OPER_START_DATE) as 等待时间
from PAT_OPERATION as a,PAT_IN_VISIT as b
where OPERATION_CODE=‘SETMI_OP01‘ and a.PATIENT_ID=b.PATIENT_ID and DISCHARGE_DATE>=‘2014-04-01‘
and DISCHARGE_DATE<‘2014-07-01‘) tb
) ranked
where ranked.rowNum <=1

因为每个id对应两个等待时间 我取第一个

时间: 2024-08-24 18:55:30

关于sql语句 先分组再排序然后取每组的第一条数据的相关文章

MySQL 分组后取每组前N条数据

与oracle的 rownumber() over(partition by xxx  order by xxx )语句类似,即:对表分组后排序 创建测试emp表 DROP TABLE IF EXISTS emp; CREATE TABLE emp ( empno decimal(4,0) NOT NULL, ename varchar(10) DEFAULT NULL, job varchar(9) DEFAULT NULL, mgr decimal(4,0) DEFAULT NULL, hi

sql分组取第一条数据

sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * from table ) as temp where temp.rownum = 1

Oracle分组取第一条数据

看看以前的私密日志,原来自己之前被很多小而简单的问题困惑过! 看着那时候我们还是新手中的新手做的备忘笔记! 其实就是用了Oracle的统计函数而已! 以前的日记(看样子应该是以前公司的源码,呵呵--)如下:勿喷! 对多数据进行分组排序后取每组第一条记录: SELECT * FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY ZA40011_3.URIAGE_DENPYO_NO,ZA40011_3.URIAGE_DENPYO_ROW_NO ORDER BY

sql server 获取每一个类别中值最大的一条数据

sql server 获取每一个类别中值最大的一条数据 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 /* 数据如下: name val memo a    2   a2(a的第二个值) a    1   a1--a的第一个值 a    3   a3:a的第三个值 b    1   b1--b的第一个

利用SQL语句产生分组序号

partition  by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组 那么我们怎么进行分组排序呢,见SQL语句如下:

【51CTO/BBS】如何完全用SQL语句,将文件存(取)到数据库?

原帖地址:http://bbs.51cto.com/thread-1130840-1.html 问题描述: 我准备在MS-SQL服务器端建立一个存储过程,需要用纯SQL语句存取文件.   求老师指导一下!! 解决方案: 有些方法用于导入和导出图片.照片.视频.文档等BLOB类型数据. SQL Server 2000: 在binn目录下的未公开工具可用,提示你提供相应的参数: textcopy 使用textcopy对sqlserver的Image字段进行读取和写入 用存储过程方法: 1.建立过程

MySQL分组然后取每个分组中按照某些字段排序的topN条数据

建表 CREATE TABLE `t` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) DEFAULT NULL, `itime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 插入测试数据 INSERT INTO t(`a`, `b`,

oracle分组后取每组第一条数据

数据格式: 分组取第一条的效果: sql语句: SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC)rn, test1.* FROM test1) WHERE rn = 1 ;

【SQL语句】查询某个表在某时间段中的最新数据

一.思路:首先查询在某个时间段中最新时间的字段,然后用查到的字段与原来的表作自连接,最后对自连接后的表进行所需字段的查询. 二.sql语句: SELECT *FROM ( SELECT max(i.createDate) AS createDate, r.websiteConfigInfo_id AS webId FROM run r WHERE r.staticsEndTime BETWEEN : beginTime AND : endTime AND r.websiteConfigInfo_