我应该使用 NTILE 按数据长度获取数据分布吗?

Should I use NTILE to get a distribution of data by datalength?

使用 SQL Server 2014。

我有一个包含数百万行的 table,其中有一个名为 [Description]varchar(max) 列。 MAX(DATALENGTH(Description)) 是 30000。

我想显示一个结果集,以 1000 为一组按数据长度显示数据分布。

因此,第一行将显示数据长度在 0 到 1000 之间的行数,第二行将显示 1001-2000 行数,依此类推。总共 30 行(因为它们是组1000 个)。

NTILE 是适合这个的工具吗?您将如何编写此查询?

不要使用 ntile。使用这个:

SELECT 
  COUNT(*) cnt, 
  DATALENGTH(Description)/1000 grp,
  CAST(DATALENGTH(Description)/1000 * 1000 as varchar(10)) +'-'+ 
    CAST((DATALENGTH(Description)/1000 + 1) * 1000 as varchar(10)) Interval
FROM @t
GROUP BY DATALENGTH(Description)/1000