当前位置: 首页 > news >正文

每个分类取最新的几条的SQL实现

CREATE TABLE table1
(
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](128) NOT NULL,
[class] int not null,
[date] datetime not null
)

class 表示分类编号。 分类数不固定, 至少有上千种分类 
date 表示该条记录被更新的时间 
我们现在想获得每个分类最新被更新的5条记录。

 

解决方案

select id,name,class,date from(
select id,name,class,date ,row_number() over(partition by class order by date desc)
as rowindex from table1) a
where rowindex <= 5

 

 create table #temp

(
  company varchar(50),
  product varchar(50),
  inputDate datetime
)
 
insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车1','2010-8-1')
insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车2','2010-8-1')
insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车3','2010-8-1')
insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车4','2010-8-1')
insert into #temp(company,product,inputDate) values('杭州大明有限公司','汽车5','2010-7-1')
 
insert into #temp(company,product,inputDate) values('北京小科有限公司','汽车1','2010-8-1')
insert into #temp(company,product,inputDate) values('北京小科有限公司','汽车2','2010-8-1')
insert into #temp(company,product,inputDate) values('北京小科有限公司','汽车3','2010-8-1')
insert into #temp(company,product,inputDate) values('北京小科有限公司','汽车4','2010-8-1')
 
insert into #temp(company,product,inputDate) values('上海有得有限公司','汽车1','2010-8-1')
insert into #temp(company,product,inputDate) values('上海有得有限公司','汽车2','2010-8-1')
insert into #temp(company,product,inputDate) values('上海有得有限公司','汽车3','2010-8-1')
insert into #temp(company,product,inputDate) values('上海有得有限公司','汽车4','2010-8-1')
 
insert into #temp(company,product,inputDate) values('天津旺旺有限公司','汽车4','2010-8-1')
insert into #temp(company,product,inputDate) values('天津旺旺有限公司','汽车5','2010-8-1')
 
 
 
select * from #temp
 
 
 
 
create proc getdata
 
@num int 
as
 
begin
 
select  top 4 *  from  
 
(
select ( select count(*) from #temp where company=a.company and product<=a.product) as 序号,a.company,a.product,a.inputDate
from #temp a 
) b 
where 序号>=@num
 
order by  序号,inputDate desc
 
end
 
go
getdata 2
 
 
/*
 
结果
 
1    杭州大明有限公司    汽车1    2010-08-01 00:00:00.000
1    北京小科有限公司    汽车1    2010-08-01 00:00:00.000
1    上海有得有限公司    汽车1    2010-08-01 00:00:00.000
1    天津旺旺有限公司    汽车4    2010-08-01 00:00:00.000
 
 
2    天津旺旺有限公司    汽车5    2010-08-01 00:00:00.000
2    上海有得有限公司    汽车2    2010-08-01 00:00:00.000
2    北京小科有限公司    汽车2    2010-08-01 00:00:00.000
2    杭州大明有限公司    汽车2    2010-08-01 00:00:00.000
 
 
3    杭州大明有限公司    汽车3    2010-08-01 00:00:00.000
3    北京小科有限公司    汽车3    2010-08-01 00:00:00.000
3    上海有得有限公司    汽车3    2010-08-01 00:00:00.000
4    北京小科有限公司    汽车4    2010-08-01 00:00:00.000
 
 
 
4    北京小科有限公司    汽车4    2010-08-01 00:00:00.000
4    上海有得有限公司    汽车4    2010-08-01 00:00:00.000
4    杭州大明有限公司    汽车4    2010-08-01 00:00:00.000
5    杭州大明有限公司    汽车5    2010-07-01 00:00:00.000
 
 
*/
 
 
--sql2005
create proc getdata2005
@num int 
as
begin
select  top 4 *  from 
(
select row_number() over (partition by company order by product ) as 序号,a.company,a.product,a.inputDate
from #temp a 
) b 
where 序号>=@num
order by  序号,inputDate desc
end
 
 
getdata2005 4
 
 
 
select *   from  #temp
 
select ( select count(*) from #temp where  company+ product<=a.company+a.product) as 序号,a.company,a.product,a.inputDate
,a.company+a.product as 唯一标志一行
from #temp a
order by company,product
 

 

代码

 


    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2010/01/05/1639886.html,如需转载请自行联系原作者


相关文章:

  • 第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档(1)
  • Drawable、Bitmap、Canvas和Paint的关系以及部分使用方法
  • 嫌访问速度慢?教你秒速打开你的WordPress
  • 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 :1-1导入JavaScript插件
  • 借用Snippet插件美化博客中的代码
  • Python的CSV模块
  • IT运维管理之自动化运维篇
  • zookeeper分布式安装
  • 百度面试题:求绝对值最小的数
  • 3-9 读写缓存流 ——BufferedStream类
  • Java线程:线程私有变量
  • 使用Seam-gen生成基础项目骨架
  • 计算机中的颜色XII——快速计算纯色的色相值(新的公式)
  • juniper交换机 mac地址和端口绑定
  • asp.net开发必备51种代码(非常实用)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【前端学习】-粗谈选择器
  • es6要点
  • Java Agent 学习笔记
  • JavaScript创建对象的四种方式
  • JavaScript对象详解
  • maya建模与骨骼动画快速实现人工鱼
  • Spark RDD学习: aggregate函数
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Spring Cloud Feign的两种使用姿势
  • vue-cli3搭建项目
  • windows下使用nginx调试简介
  • 从tcpdump抓包看TCP/IP协议
  • 大数据与云计算学习:数据分析(二)
  • 大主子表关联的性能优化方法
  • 分享几个不错的工具
  • 基于遗传算法的优化问题求解
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 你不可错过的前端面试题(一)
  • 扑朔迷离的属性和特性【彻底弄清】
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 在electron中实现跨域请求,无需更改服务器端设置
  • Nginx实现动静分离
  • scrapy中间件源码分析及常用中间件大全
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​比特币大跌的 2 个原因
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #考研#计算机文化知识1(局域网及网络互联)
  • (1)STL算法之遍历容器
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (6)STL算法之转换
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (七)Knockout 创建自定义绑定
  • (一)RocketMQ初步认识
  • .cfg\.dat\.mak(持续补充)
  • .Net面试题4