使用SQL Server 2014。
我有一张包含数百万行的表格,其中varchar(max)
列名为[Description]
。 MAX(DATALENGTH(Description))
为30000。
我想显示一个结果集,显示数据长度为1000的数据分布。
因此,第一行将显示数据长度介于0和1000之间的行数,第二行将显示行数1001-2000等。总共30行(因为它们是1000的组) )。
NTILE是否是正确的工具?你会怎么写这个查询?
答案 0 :(得分:1)
不要使用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