我需要在一个巨大的数据库中聚合一些行,并且需要根据 2 power n 对它们进行分组。例如:我首先需要聚合 1 行,然后是 2 行,然后是 4 行等。
任何人都可以帮助我在这种情况下如何使用 group by 吗?
谢谢
我需要在一个巨大的数据库中聚合一些行,并且需要根据 2 power n 对它们进行分组。例如:我首先需要聚合 1 行,然后是 2 行,然后是 4 行等。
任何人都可以帮助我在这种情况下如何使用 group by 吗?
谢谢
行号的日志基数 2 将为您提供所需的分组。
在 sql server 中,您可以使用
select floor(log((ROW_NUMBER() over (order by someColumn))) / log(2))
from yourTable
SqlServer 2012 有一个 log 函数,它接受 log 基数的第二个参数,但在此之前,您需要自己从 log base 10(log10 函数)或自然 log(log 函数)转换为 log base 2。我在这里找到了转换公式