2
每个位的位置计数的“1”值数我有我的红移表BIGINT列,我想那会查询:在红移列
- 指望有多少次的值“1”出现在此列的所有行跨二进制值每个位的位置
- 将显示它的方式,我就可以拿X顶部bits_positions。
例如(我已经写了整数值为二进制简化的例子):
column
--------
11011110 = 222
00000000 = 0
11111100 = 252
00011000 = 24
11111100 = 252
00011000 = 24
11000010 = 194
<- bit_position
将返回象表:
bit_position count
0 0
1 2
2 3
3 5
4 5
5 2
6 4
7 4
在这种情况下我就可以拿到前五名bit_position:(3,4,6,7,2)
注:我最多可以有64个bit_positions一列。
感谢joe, 问题是,如前所述,我可能会有多达64位的列,并且我正在寻找更动态的东西(所以它也可以投射超过一列)。 的转置工会做工作,而且在这种情况下,我找的东西,如果可能的 – JustinCase
更加动感如果您想更多的东西动态,你需要考虑使用UDF。你可以从我的'f_bitwise_to_string' UDF开始作为模板,并从那里添加你需要的东西。 https://github.com/awslabs/amazon-redshift-udfs/blob/master/scalar-udfs/f_bitwise_to_string.sql –