在SQL统计和计算过程中,经常需要筛选出一些值中的最大值,这个时候该如何实现呢?其实,SQL数据库中已经内置了聚合函数max可以直接给我们使用
创建一个临时表,用于演示sqlserver语法中的聚合函数:最大值MAX的使用 IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1; CREATE TABLE #tmp1( Col1 varchar(50), Col2 int, Col3 varchar(50) );
往临时表中插入几行测试数据,其中包括插入Null值,看看Null在最大值中是如何表现的 insert into #tmp1(Col1, Col2, Col3) values('Code1', 1, 'a'); insert into #tmp1(Col1, Col2, Col3) values('Code2', 2, 'b'); insert into #tmp1(Col1, Col2, Col3) values('Code3', null, 'c'); insert into #tmp1(Col1, Col2, Col3) values('Code4', 4, null); insert into #tmp1(Col1, Col2, Col3) values('Code5', 5, 'e');
查询临时表中的测试数据 select * from #tmp1;
使用max直接获取整型栏位Col2的最大值,从运行结果可以看出,null直接被max忽略了 select MAX(Col2) from #tmp1;
使用max直接获取整型栏位Col2的前三行记录中的最大值,运行结果1、2、null使用max获取的最大值是2 select MAX(Col2) from #tmp1 where Col1 in ('Code1', 'Code2', 'Code3');
使用max直接获取字符串类型栏位Col3的最大值,从运行结果可以看出,字符串是按照字母顺序比较大小的,且也忽略了null值 select MAX(Col3) from #tmp1;
使用max直接获取字符串类型栏位Col3的前四行记录中最大值,运行结果a、b、c、null使用max获取的最大值是c select MAX(Col3) from #tmp1 where Col1 in ('Code1', 'Code2', 'Code3', 'Code4');