前言:
而今姐妹们对“sql 查询时间区间”可能比较珍视,姐妹们都需要知道一些“sql 查询时间区间”的相关资讯。那么小编同时在网络上汇集了一些有关“sql 查询时间区间””的相关文章,希望姐妹们能喜欢,大家一起来学习一下吧!要求:根据奖金等级表的数值区间,返回奖金对应的等级。
1、链接外部数据:数据--现有链接--浏览更多,在路径中选择数据Excel文件和目标工作表,建立数据链接。
详细步骤参考前面所发的SQL相关文章。
2、编写SQL语句。2.1、使用switch函数,SQL语句为:
select 姓名,奖金,switch(奖金<200,"D级",奖金<300,"C级",奖金<500,"B级",奖金>=500,"A级") as 奖金等级 from [奖金$a1:b11]
switch函数直接判断数值,若数值小于200,返回D级;数值小于300返回C级;数值小于500,返回B级;余下的数值条件要变化为>=500返回A级而不是<=700。
2.2、使用iif函数,SQL语句为:
select 姓名,奖金,iif(奖金<200,"D级",iif(奖金<300,"C级",iif(奖金<500,"B级","A级"))) as 奖金等级 from [奖金$a1:b11]
其基本思路和switch函数相同,类似工作表函数if的嵌套。
2.3、使用betweent...and,SQ语句为:
select a.姓名,a.奖金,b.等级 from [奖金$a1:b11] a,[奖金等级$] b where a.奖金 between b.最小值 and b.最大值
以戴苏明同学为例子,在SQL代码运行的时候,将戴苏明同学的奖金一一和奖金等级表中的数值进行对比,符合区间的就返回区间等级。其他同学亦然。
但是,当奖金超出最大值700的时候就会取不到该条数据。
如刘平的奖金701并不在betweent...and的区间内,返回的结果中没有刘平的数据。
2.4、使用Where比较大小,sql语句为:
select a.姓名,a.奖金,b.等级 from [奖金$a1:b11] a,[奖金等级$] b where a.奖金 >=b.最小值 and a.奖金<=b.最大值
此方法原理和betweent...and一样,当奖金超过最大值700时,数据将有遗漏(刘平)。
当奖金的最大值为700的时候,以上四种方法都得出同样的结果。
当奖金最大值超过700的时候,3、4两个方法将遗漏奖金大于700的数据。
因此,可在设计奖金等级表的时候,可以将最大值700改为一个比较大的数值,使奖金再高也不会超过,则四种方位皆可。
如更改奖金等级表的最大值700为70000,这么大的一个范围,则四种方法都适用。
标签: #sql 查询时间区间