您好,欢迎访问一九零五行业门户网

sql server求分组最大值,最小值,最大值对应时间,和最小值对应时间

本篇对sql server求分组最大值,最小值,最大值对应时间,和最小值对应时间的相关知识做出了讲解。
先创建students表
create table [dbo].[students](
[id] [int] identity(1,1) not null,
[age] [int] null,
[name] [nvarchar](50) null,
[addtime] [datetime]  null
) on [primary]
插入几条测试数据
insert [dbo].[students] ([age], [name], [addtime]) values (22, n'李四', '2015-04-08 01:00:00.000')
insert [dbo].[students] ([age], [name], [addtime]) values (8, n'李四', '2017-05-03 00:00:00.000')
insert [dbo].[students] ([age], [name], [addtime]) values (98, n'李四', '2017-10-03 00:00:00.000')
insert [dbo].[students] ([age], [name], [addtime]) values (34, n'张三', '2016-09-08 00:00:00.000')
insert [dbo].[students] ([age], [name], [addtime]) values (45, n'张三','2011-05-08 00:00:00.000')
insert [dbo].[students] ( [age], [name], [addtime]) values (5, n'张三', '2014-04-01 00:00:00.000')
第一种写法:
这种写法用到了窗口函数,窗口函数的行为描述出现在函数的over子句中,并涉及多个元素,3个核心元素分别是:分区,排序和框架
select distinct name,
maxage, max(case maxagenum when 1 then addtime else '' end) over(partition by name) maxaddtime ,
minage,max(case minagenum when 1 then addtime else '' end) over(partition by name) minaddtime
from (
select name,addtime,
max(age) over(partition by name) maxage,
min(age) over(partition by name) minage,
rank() over(partition by name order by age desc) maxagenum ,
rank() over(partition by name order by age ) minagenum from students
) s
第二种写法:
with s as
(
select name,max(age) maxage,min(age) minage from students
group by name
)
select name,max(maxage) maxage,max(maxagetime) maxagetime,max(minage) minage,max(minagetime) minagetime from (
select ss.name,s.maxage,ss.addtime maxagetime,0 minage, '' minagetime from students ss inner join s on ss.name=s.name and ss.age=s.maxage
union all
select ss.name,0 maxage , '' maxagetime,s.minage minage,ss.addtime minagetime from students ss inner join s on ss.name=s.name and ss.age=s.minage
) a group by name
本篇sql server求分组最大值,最小值,最大值对应时间,和最小值对应时间做出了讲解,更多的学习资料清关注即可观看。
相关推荐:
关于left join on 和where条件放置的相关讲解
关于php+mysql模糊查询功能的相关知识
通过php实现复制移动文件的方法
以上就是sql server求分组最大值,最小值,最大值对应时间,和最小值对应时间的详细内容。
其它类似信息

推荐信息