clwn.net
当前位置:首页 >> 分组取第一条 >>

分组取第一条

select * from ( select row_number() over(partition by '分组' order by '日期') as rownum -- 排序并分组 , * -- 所需显示的字段 from 表 ) as T where T.rownum = 1 对每组的数据按日期排序并加上行号 取出时只取行号为1,也就是第一条数据。

--不知道你需要依据什么分组,如下是根据table1_id进行分组所得结果 select * from (select a.id as a_id,a.name,a.time,a.content,b.id as b_id,b.user from table1 a inner join table2 b on a.id = b.table1_ID) new_tbl where b_id in (sele...

用row_number函数可以解决。 1、创建测试表及插入数据: create table test(id int,name varchar(10),score int,classname varchar(20));insert into test values (1,'张三',100,'一班');insert into test values (2,'李四',89,'一班');insert i...

不知道你什 么数据库,给出sqlserver和oracle的 select 星期,字母from(select rank() over(partition by 星期 order by 字母 desc) id,*from 表) t1where id=1 或者 select 星期,max(字母)from 表group by 星期

不列出表结构及测试数据,只能这样大概写个思路了: select a.* from ( select t1.*,(select count(*)+1 from 表 where 分组字段=t1.分组字段 and 排序字段

使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值为1的记录即可。目前主流的数据库都有支持分析函数,很好用。 其中,partition by 是指定按哪些字段进行分组,这些字段值相同的记录将在一起编号...

那只能是借助rownum来实现了. oracle中在加了rownum之后可进行排序。 使用rownum,一般是筛选部分行数为结果,所以若再排序,只是对部分结果进行排序,可能不是所需要的结果。 若在oracle先排序再rownum,则使用SQL嵌套可以实现,比如 select * ...

oracle进行分组后,取出每组的前几条数据SELECT *FROM (SELECT 分组的字段名,ROW_NUMBER() OVER(PARTITION BY 分组的字段名 ORDER BY 排序的字段名) AS RNFROM 表名)WHERE RN

CREATE TABLE test ( channelId int, subChanID INT ); INSERT INTO test SELECT 1, 11 UNION ALL SELECT 1, 12 UNION ALL SELECT 1, 13 UNION ALL SELECT 1, 14 UNION ALL SELECT 1, 15 UNION ALL SELECT 2, 21 UNION ALL SELECT 2, 22 UNION A...

# mysql不支持其它复杂数据库的类似 rank() over 的排名和统计查询 # 只能通过变通的子查询和逻辑计算方式来实现,对于中小数据量可以考虑 -- rank 排名实现 select inline_rownum, aa, cc, amt, orderid FROM ( select # logic_cal 只是实现计...

网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com