sql 分组后每组查询10个】的更多相关文章

SELECT ID,Name,Class ROW_NUMBER() OVER(PARTITION BY Class ORDER BY ID) as NUM 主要是用到 rownum 里面的 PARTITION BY 函数  使用class分组,id排序 .每个分组查询前9个…
sql 分组后显示每组的前几条记录 如   表中记录是             code       serialno             A1               1             A1               2             A1               3             A1               5                 B1               2             B1               3…
原文:sql 分组后按时间降序排列再取出每组的第一条记录 竞价记录表: Aid 为竞拍车辆ID,uid为参与竞价人员ID,BidTime为参与竞拍时间 查询出表中某人参与的所有车辆的最新的一条的竞价记录 思路:通过aid分组,通过时间做降序排列,给每组数据加上行号(rowId)然后取出行号为1的数据,就是所要查询的数据 源数据: select * from auto_AuctionRecords 执行查询后的数据: select * from (select ROW_NUMBER()over(p…
sql 分组取每组的前n条或每组的n%(百分之n)的数据 sql keyword: SELECT * ,ROW_NUMBER() OVER(partition by b.UserID order by b.UserID ) rn    from b 运行结果:按UserID分组查询出每组条数,rn从1递增 UserID | rn 1                1 1               2 1              3 2               1 2           …
原文地址:https://codedefault.com/s/how-can-i-retrieve-the-last-record-in-each-group-mysql 问题描述 比如,在MySQL数据库中,有数据表messages和数据记录,如下: Id Name Other_Columns ------------------------- 1 A A_data_1 2 A A_data_2 3 A A_data_3 4 B B_data_1 5 B B_data_2 6 C C_data…
本示例测试两个表联接查询后,分组并取分组后的最小行号记录 测试表: tb1表结构如下: CREATE TABLE [dbo].[tb1]( ) NOT NULL, ) NULL, ) NULL, CONSTRAINT [PK_tb1] PRIMARY KEY CLUSTERED ( [a] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, AL…
修改<常用SQL之日期格式化和查询重复数据>中表test1的创建时间,修改后的测试数据如下: 以姓名分组后提取每组最新创建的记录: SELECT a.* FROM test1 AS a, (SELECT b.`name`, MAX(b.create_time) AS `create_time` FROM test1 AS b GROUP BY b.`name`) AS c WHERE a.`name`=c.`name` AND a.create_time = c.create_time ; 执…
1.取时间最新的记录 不分组有重复(多条CreateTime一样的都是最新记录) select * from test t where pid in ( select PId from Test t where time=(select max(time) from Test t1 where t1.PId=t.PId) group by Pid ) and time=(select max(time) from Test t1 where t1.PId=t.PId) 2.分组后取时间最新的记录…
mysql分组取每组前几条记录(排名) 附group by与order by的研究 http://www.jb51.net/article/31590.htm --按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b 5 b5b5b5b5b5 */ --创建表…
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号. 示例: xlh           row_num 1700              1 1500              2 1085             …
select  row_number() over(partition by  CODE order by SEQUENCE) as RowIndex  from Table 注:根据表的CODE 字段分组,组内根据SEQUENCE字段排序,生成序号 RowIndex…
)) , 'aa') , 'bb') , 'aaa') , 'bbb') , 'ccc') go , , '') from tb group by id…
CREATE TABLE students (course varchar(10), stu_name varchar(10), city varchar(10), score int ) insert into students values('数学','Jack','Tianjin',80); insert into students values('数学','Jordan','Tianjin',80); insert into students values('数学','James','B…
/****** Object: Table [dbo].[TEMP] Script Date: 2018-8-22 星期三 23:33:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TEMP]( [ID] [nvarchar](36) NULL, [SerialNo] [nvarchar](36) NULL, [Qty] [numeric](10, 1) NULL, [Foreign…
场景:sql server 2008 drop table ID CREATE TABLE ID ( id ,) not null, code int , D date, PRIMARY KEY (id) ) ,getdate()) ,getdate()) ,getdate()) ,getdate()) ,'2017-08-02') ,'2017-08-01') select * from ID 目标: select COUNT(*) from ID group by code 产生code列唯…
select gr,num,dt,(select bys from test where gr=b.gr and dt=b.dt) bys from ( select gr,count(0) num,max(dt) dt from test group by gr ) b //如果有重复项,可用如下语句(针对Mysql的limit,Oracle 可用 rownum<2) select gr,num,dt,(select bys from test where gr=b.gr and dt=b.d…
--有id,name,createDate的一张表testTable--根据name分组,获取每组中createDate最大的那条记录(整条)查询出来---------------------------------------------- 创建一张表,语句如下: CREATE TABLE [dbo].[testTable] ( [id] [int] NOT NULL IDENTITY(1, 1), [name] [nchar] (10) COLLATE Chinese_PRC_CI_AS N…
今天遇到这样一个需求场景,要取出 每一种分类(a,b组合分类) 符合条件的日期(字段c) 距离现在最近的10个日期 的数据 首先想到的是用sql筛选出符合某种条件的所有数据,这样的事情很简单 然后用脚本(python)遍历每一种组合(a,b),然后按日期c倒序排序 取前10 如果拿到这个数据后 还要去hive连表查询其他数据,那么上面的方法就比较麻烦,可能需要再取多次hive 我们有没有sql的方法直接完成这样的事情呢?有的 我们可以用到row_number: with t_rank as (…
数据准备 -- mysql语法 DROP TABLE IF EXISTS `test_group_type`; CREATE TABLE `test_group_type` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` int(255) NOT NULL COMMENT '分类', `sortno` int(11) NOT NULL DEFAULT '1' COMMENT '分类排序', PRIMARY KEY (`id`) ) ENGINE=In…
例如有一个表student,其结构如下: id      name     sort      score 1        张三      语文      82 2        李四      数学       95 3        王五      语文       88 4        小东       英语       86 5        张三      数学       92 6        小红      体育       80 要求查询的结果如下: id      nam…
--操作日志表 CREATE TABLE [dbo].[JobLog]( [JobLogId] [int] IDENTITY(1,1) NOT NULL, [FunctionId] [nvarchar](20) NULL, [OperateTime] [datetime] NULL, CONSTRAINT [PK_JobLog] PRIMARY KEY CLUSTERED ( [JobLogId] ASC )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPU…
/* 分组之后拼接字符串 */ ;with t as( SELECT WorkflowId,Remark FROM dbo.OperatorAutomationProcess GROUP BY WorkflowId,Remark ) , H AS( SELECT WorkflowId, -- 分组的主键 STUFF( ( SELECT '_'+ Remark -- 要拼接的列 FROM t a WHERE b.WorkflowId = a.WorkflowId FOR XML PATH('')…
查询 每个班级英语成绩最高的前两名的记录 原文:https://www.cnblogs.com/hxfcodelife/p/10226934.html select a.Classid,a.English from (select Classid,English,row_number() over(partition by Classid order by English desc) as n from CJ) a where n<=2 另外一种情况:取组内最新的数据select max(cre…
背景:  A表.B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序) 经过百度,发现 row_number() over(partition by a order by b desc)函数可用(需要说明下,order by 必须有缺少会报错),以下是数据环境及结果. 创建数据环境 create table A(ANAME varchar(20)); insert into A values('alan'); insert into A values('Ale…
row_number() over(partition by 分组字段 order by 排序字段 desc)…
按name分组取最大的两个val: [比当前记录val大的条数]小于2条:即当前记录为为分组中的前两条 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name,a.val; val from tb where name=a.name order by val desc) order by a.name,a.val; ) order by a.name;…
with t as( select 'Charles' parent, 'William' child union select 'Charles', 'Harry' union select 'Anne', 'Peter' union select 'Anne', 'Zara' union select 'Andrew', 'Beatrice' union select 'Andrew', 'Eugenie' ) SELECT parent, STUFF( ( SELECT ','+ chil…
SELECT * FROM( SELECT id,name,counts,createDate,row_number() OVER(partition BY name ORDER BY createDate DESC) rowno FROM testTable ) t…
在一个月黑风高的夜晚,自己无聊学习的SQL的时候,练习,突发奇想的想实现一个功能查询,一张成绩表有如下字段,班级ID,英语成绩,数据成绩,语文成绩如下图 实现 查询出 每个班级英语成绩最高的前两名的记录. 看起来不难的业务,做起来才知道还挺麻烦的,说白了其实就是实现分组后的组内排序,一般不思考的话我们会写出这样的语句: select top 2 English,Classid from CJ group by Classid order by English desc 出现这个错误,应该就明白了…
比如select gid from table group by gid 查询时使用下面的方法查询条数 select count(distinct gid) from table 使用select count(gid) from table group by gid是错误的 这样查询的是分组后 每个组内部的条数…