SQL:计算值所处的间隔
我有一个这样的专栏:SQL:计算值所处的间隔,sql,sybase,Sql,Sybase,我有一个这样的专栏: column1 4 12 23 6 14 35 column1 column2 4 0-5 23 21-25 6 6-10 14 11-15 33 31-35 select col1, concat( floor(co
column1
4
12
23
6
14
35
column1 column2
4 0-5
23 21-25
6 6-10
14 11-15
33 31-35
select col1,
concat( floor(col1 / 5) * 5, '-', 5 + floor(col1 / 5) * 5)
我想在它旁边创建另一列,显示column1
中的值所属的范围,如下所示:
column1
4
12
23
6
14
35
column1 column2
4 0-5
23 21-25
6 6-10
14 11-15
33 31-35
select col1,
concat( floor(col1 / 5) * 5, '-', 5 + floor(col1 / 5) * 5)
这似乎是一个简单的排名任务,但我很难让它工作。我对SQL非常陌生,可能缺少一些基本的东西。所以,也许只是为我指出一个方向,让我从现在开始,因为我迷路了
到目前为止,我已经研究了使用案例
(没有成功)和RANK()
。后者根本不适用于我,因为它甚至没有突出显示为关键字(我使用的是Sybase Interactive SQL v12.0.1)。尽管在我看来,RANK()
即使有效,也不是一种可行的方法,因为我需要在精确的范围内(步骤5为0到35)排列我的值
提前谢谢大家 您可以这样做:
column1
4
12
23
6
14
35
column1 column2
4 0-5
23 21-25
6 6-10
14 11-15
33 31-35
select col1,
concat( floor(col1 / 5) * 5, '-', 5 + floor(col1 / 5) * 5)
也可以使用“| |”运算符:
select col1,
floor(col1 / 5) * 5 || '-' || (5 + floor(col1 / 5) * 5))
或者数据库用于字符串连接的任何方法。您可以执行以下操作:
column1
4
12
23
6
14
35
column1 column2
4 0-5
23 21-25
6 6-10
14 11-15
33 31-35
select col1,
concat( floor(col1 / 5) * 5, '-', 5 + floor(col1 / 5) * 5)
也可以使用“| |”运算符:
select col1,
floor(col1 / 5) * 5 || '-' || (5 + floor(col1 / 5) * 5))
或者数据库用于字符串连接的任何方法。假设您希望在
0-5
(特殊情况)、6-10
、11-15
等中对值进行分组,只需使用以下查询(为SQL Server编写,但说明了这一想法):
选择num,CONCAT(
案例当num假设您希望在0-5
(特例)、6-10
、11-15
等范围内对值进行分组,只需使用以下查询(为SQL Server编写,但说明了这一想法):
选择num,CONCAT(
当num或
concat(column1-(column1%5),“-”,column1-(column1%5)+5)
或
concat(column1-(column1%5),“-”,column1-(column1%5)+5)
选择col1,
concat(地板(col1/5)*5'-',5+地板(col1/5)*5)选择col1,
concat(floor(col1/5)*5'-',5+floor(col1/5)*5)用你正在使用的数据库标记你的问题。不要有值重叠,比如0-5和5-10。10属于哪一组?5-10还是10-15?萨尔曼,我想没那么重要。给我一分钟时间编辑这个问题。所以零是一个超级特例(因为你所有的范围都以1或6作为最后一位数字)?用你正在使用的数据库标记你的问题。不要有值重叠,比如0-5和5-10。10属于哪一组?5-10还是10-15?萨尔曼,我想这没什么大关系。给我一分钟来编辑问题。所以零是一个超级特例(因为您的所有范围都以1或6作为最后一位数字开始)?它工作正常,非常感谢您的帮助和指导!它工作正常,非常感谢您的帮助和指导!