使用SQL创建直方图

时间:2014-05-02 10:55:13

标签: sql-server tsql

我对SQL非常陌生并且希望创建一个直方图,它应该如下所示 - 2列,一列带有“z”值,范围从0到1,间隔为0.01,第二列将包括每个间隔的计数(z)。在视觉上,它应该看起来像这样:

      z | count(z)
    -------------
  0-0.01| 12312

0.01 - 0.02 | 143565

0.02 - 0.03 | 23445

依旧......

我尝试循环,连接字符串并使用EXEC,但似乎没有任何工作:( 我最需要提取一些有用的数据是使用下面的代码,它产生一个2D矩阵,第一列包含数据,其余为NULL:

DECLARE @i float = 0  
WHILE @i < 0.1 
  BEGIN
    exec ('select count(z) as ''' +@i +''' from specObj where z BETWEEN 
' +@i +' and (' +@i +'+0.01)')
    SET @i = @i + 0.01    
  END

由于

1 个答案:

答案 0 :(得分:0)

无需循环。只需在group by中使用一些算术。这是基本的想法:

select cast(z * 100 as int)/100.0 as range_start, (1 + cast(z * 100 as int))/100.0  as range_end,
       count(*)
from table t
group by cast(z * 100 as int);

实际上将范围开始和范围结束转换为字符串(例如'[0.01-0.02]')需要字符串操作,这可能取决于特定数据库,而问题中未指定。