前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sql server 获取每一个类别中值最大的一条数据

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

作者头像
java达人
发布2018-01-31 18:25:26
1.1K0
发布2018-01-31 18:25:26
举报
文章被收录于专栏:java达人java达人

数据如下:

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

--创建表并插入数据:

create table tb(name varchar(10),val int,memo varchar(20))

insert into tb values('a', 2, 'a2(a的第二个值)')

insert into tb values('a', 1, 'a1--a的第一个值')

insert into tb values('a', 3, 'a3:a的第三个值')

insert into tb values('b', 1, 'b1--b的第一个值')

insert into tb values('b', 3, 'b3:b的第三个值')

insert into tb values('b', 2, 'b2b2b2b2')

insert into tb values('b', 4, 'b4b4')

insert into tb values('b', 5, 'b5b5b5b5b5')

go

--一、按name分组取val最大的值所在行的数据。

--方法1:

select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name

--方法2:

select a.* from tb a where not exists(select 1 from tb where name = a.name and val > a.val)

--方法3:

select a.* from tb a,(select name,max(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name

--方法4:

select a.* from tb a inner join (select name , max(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name

--方法5

select a.* from tb a where 1 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name

/*

name val memo

---------- ----------- --------------------

a 3 a3:a的第三个值

b 5 b5b5b5b5b5

*/

写法6

SELECT * FROM ( SELECT * , ROW_NUMBER() OVER ( PARTITION BY name ORDER BY val DESC ) rid FROM tb ) AS t WHERE rid = 1

如果上述存在一个name组中有两个以上相同的val,则查询方法1-5不正确。

例如:

insert into tb values('a', 2, 'a2(a的第二个值)') insert into tb values('a', 3, 'a1--a的第一个值') insert into tb values('a', 3, 'a3:a的第三个值')

关于partition by,大家可以看另一篇文章sum(x) over( partition by y ORDER BY z ) 分析

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java达人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档