-3

我需要在一个巨大的数据库中聚合一些行,并且需要根据 2 power n 对它们进行分组。例如:我首先需要聚合 1 行,然后是 2 行,然后是 4 行等。

任何人都可以帮助我在这种情况下如何使用 group by 吗?

谢谢

4

1 回答 1

2

行号的日志基数 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。我在这里找到了转换公式

于 2013-10-18T18:44:34.560 回答