Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:计算值所处的间隔_Sql_Sybase - Fatal编程技术网

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作为最后一位数字开始)?它工作正常,非常感谢您的帮助和指导!它工作正常,非常感谢您的帮助和指导!