Netezza 中的随机选择
Random selection in Netezza
我需要有关 Netezza 中随机 selection 的帮助。
例如,我有 4 个客户,每个客户都有一些变量选项。
客户 |变量
1 | 4
1 | 5
1 | 6
2 | 10
2 | 12
2 | 16
3 | 1
3 | 2
3 | 3
3 | 6
4 | 5
4 | 8
而且我只需要 select 使用随机 selection 为每个客户提供一个选项。
解决方案示例:
客户 |变量
1 | 5
2 | 10
3 | 3
4 | 8
谢谢!
IBM Netezza 提供了内置的 random()
函数 Random number functions,您可以使用它来导出所需的输出。以下解决方案在 NPS Release 7.2.1.0
上测试
测试数据:
create table TEST
(
Customer int,
Variable int
)
distribute on random;
insert into TEST values(1,4);
insert into TEST values(1,5);
insert into TEST values(1,6);
insert into TEST values(2,10);
insert into TEST values(2,12);
insert into TEST values(2,16);
insert into TEST values(3,1);
insert into TEST values(3,2 );
insert into TEST values(3,3);
insert into TEST values(3,6);
insert into TEST values(4,5);
insert into TEST values(4,8);
解法:
SELECT CUSTOMER
,max(VARIABLE) AS VARIABLE
FROM (
SELECT CUSTOMER
,first_value(VARIABLE) OVER (
PARTITION BY CUSTOMER ORDER BY random()
) AS VARIABLE
FROM TEST
) a
GROUP BY CUSTOMER
ORDER BY 1;
输出迭代 1:
CUSTOMER VARIABLE
1 5
2 16
3 2
4 8
输出迭代 2:
CUSTOMER VARIABLE
1 6
2 10
3 1
4 5
我需要有关 Netezza 中随机 selection 的帮助。
例如,我有 4 个客户,每个客户都有一些变量选项。
客户 |变量
1 | 4
1 | 5
1 | 6
2 | 10
2 | 12
2 | 16
3 | 1
3 | 2
3 | 3
3 | 6
4 | 5
4 | 8
而且我只需要 select 使用随机 selection 为每个客户提供一个选项。 解决方案示例:
客户 |变量
1 | 5
2 | 10
3 | 3
4 | 8
谢谢!
IBM Netezza 提供了内置的 random()
函数 Random number functions,您可以使用它来导出所需的输出。以下解决方案在 NPS Release 7.2.1.0
测试数据:
create table TEST
(
Customer int,
Variable int
)
distribute on random;
insert into TEST values(1,4);
insert into TEST values(1,5);
insert into TEST values(1,6);
insert into TEST values(2,10);
insert into TEST values(2,12);
insert into TEST values(2,16);
insert into TEST values(3,1);
insert into TEST values(3,2 );
insert into TEST values(3,3);
insert into TEST values(3,6);
insert into TEST values(4,5);
insert into TEST values(4,8);
解法:
SELECT CUSTOMER
,max(VARIABLE) AS VARIABLE
FROM (
SELECT CUSTOMER
,first_value(VARIABLE) OVER (
PARTITION BY CUSTOMER ORDER BY random()
) AS VARIABLE
FROM TEST
) a
GROUP BY CUSTOMER
ORDER BY 1;
输出迭代 1:
CUSTOMER VARIABLE
1 5
2 16
3 2
4 8
输出迭代 2:
CUSTOMER VARIABLE
1 6
2 10
3 1
4 5