‘壹’ 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查询不同区间的数量
select
count(case when time>=1 and time <=2 then muid end),
count(case when time>=2.1 and time <=3 then muid end),
count(case when time>=3.1 and time <=4 then muid end)
from table
‘叁’ SQL语句选取某个区间的记录怎么编写
例如:写一个SQL语句,取出表S中第21~30记录(SQL server,以自动增长的ID作为主键,ID可能不连续)
方法一:
Select TOp10 * from S
Where ID>(Select MAX(ID) from (Select Top20 ID from S ) as S)
方法二:
select Top10 * from S where ID NOT IN(select Top20 ID from S)
(3)sql的查询语句取多个区间扩展阅读
SQL SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
SQL SELECT 语法
SELECT 列名称 FROM 表名称
以及:
SELECT * FROM 表名称
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
SQL SELECT 实例:
如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:
SELECT LastName,FirstName FROM Persons
‘肆’ sql怎么取区间
如果是oracle的话,可以用for in语句
for v_num in 1..10 loop
--execute some sql
end loop;
‘伍’ sql查询:怎么查询符合2个范围
sql="Select cpkd,cphd,title from news where (cpkd between '" & kdi & "' and '" & kda &"') AND (cphd between '" & hdi &"' and '" & hda & "') order by id desc "
注意sql是一个字符串变量(等号右边要成为一个字符串),要用长字符串=短字符串(用""围住)& 变量 & 短字符串(用""围住)。&是连接符,将字符串和变量连接成新的字符串。
‘陆’ sql查询价格区间
1、单行子查询出现在WHERE子句中,如下所示。
5、ANY操作符不能单独使用,必须和>、<等比较操作符一起使用。>ANY表示大于列表中任何一个数据即为TRUE;<ANY表示小于列表中的任何数据即为TRUE。具体实现如下图。
‘柒’ SQL 如何查询日期在一定范围内的数据
select * from 表 where 日期字段>='开始日期' and 日期字段<='截止日期' and convert(char(8),日期字段,108)>='开始时间' and convert(char(8),日期字段,108)<='截止时间'。
SELECT * FROM 表明 WHERE 日期字段名 BETWEEN '20130101' AND '20130130'。
例如:
select * from tb1 where dDate>='2010-11-05' and dDate<='2010-11-15'
and convert(char(8),dDate,108)>='8:00:00' and convert(char(8),dDate,108)<='9:00:00'.
select * from table1where year(d)=2010 and month(d)=7 and day(d) between 1 and 31
and (Datepart(hour,d)>=22 or Datepart(hour,d)<6)
(7)sql的查询语句取多个区间扩展阅读:
SQL查询日期:
今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0
昨天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=1
7天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())<=7
30天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())<=30
本月的所有数据:select * from 表名 where DateDiff(mm,datetime类型字段,getdate())=0
本年的所有数据:select * from 表名 where DateDiff(yy,datetime类型字段,getdate())=0
参考资料:SQL_网络
‘捌’ sql查询语句
SQL查询就是用的select相关的语句,根据不用的需求,设置关键属性值和查询区间即可完成一条查询语句
‘玖’ SQL 查询单列不同区间值
SELECT convert(varchar(10),convert(int,Score))+"~"+convert(varchar(10),convert(int, CASE WHEN Score=ceiling(Score) THEN Score+1 ELSE ceiling(Score) END)), count(*) from TTT
GROUP BY convert(varchar(10),convert(int,Score))+"~"+convert(varchar(10),convert(int, CASE WHEN Score=ceiling(Score) THEN Score+1 ELSE ceiling(Score) END))
ORDER BY 1
注意:0~1返回0次的结果出不来。
如一定要求0~1的也出结果,你还得把需求说得更清楚一下。比如说将上述ID为3的数据改为3.2,那么4~5的也将为0而查不到,还要显示4~5为0吗?5~6、6~7呢?简而言之,要求高的话,需要说明Score的最小值和最大值。
‘拾’ Oracle SQL语句查询值区间范围数据
where1=1and
IN_AVG_VALUEBETWEEN'30'AND'50'
or
IN_MAX_VALUEBETWEEN'30'AND'50'
or
IN_MIN_VALUEBETWEEN'30'AND'50'