----------------------------------------------
--有id,name,createDate的一张表testTable
--根据name分组,获取每组中createDate最大的那条记录(整条)查询出来
----------------------------------------------
【开发积累|SQL 分组后获取其中一个字段最大值的整条记录】创建一张表,语句如下:
CREATE TABLE [dbo].[testTable]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
[counts] [int] NULL,
[createDate] [datetime] NULL
)
GO
-- Constraints and Indexes
ALTER TABLE [dbo].[testTable] ADD CONSTRAINT [PK_testTable] PRIMARY KEY CLUSTERED ([id])
GO
插入测试数据:
insert into testTable(id,name,counts,createDate) values(1,'A',20,'01 14 2011 10:52PM')
insert into testTable(id,name,counts,createDate) values(2,'A',10,'02 14 2011 10:52PM')
insert into testTable(id,name,counts,createDate) values(3,'B',20,'03 14 2011 10:52PM')
insert into testTable(id,name,counts,createDate) values(4,'B',40,'04 14 2011 10:52PM')
insert into testTable(id,name,counts,createDate) values(5,'B',10,'05 14 2011 10:52PM')
insert into testTable(id,name,counts,createDate) values(6,'C',20,'06 14 2011 10:52PM')
insert into testTable(id,name,counts,createDate) values(7,'C',40,'07 14 2011 10:52PM')
查询SQL语句:
select * from (
select id,name,counts,createDate,row_number() over(partition by name order by createDate desc) rn
from testTable
) t where t.rn <=1
结果如下:
文章图片
推荐阅读
- 数据库|SQL行转列方式优化查询性能实践
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- SQL|SQL基本功(三)-- 聚合与排序
- web挖洞|HACK学习黑帽子Python--漏洞检测脚本快速编写
- sqlite|python中用SQLite3添加 主键约束 唯一约束 非空约束 外键约束(约束的介绍以及设置)
- python|python中使用SQLite3对数据库的基本操作(基于ubuntu操作系统)
- TDSQL | DTS for PostgreSQL 逻辑复制详解
- TDSQL | 《checkpoint 原理浅析》
- TDSQL-A 技术架构演进及创新实践