从不同的行中选择唯一的随机值

时间:2014-06-02 15:14:13

标签: sql teradata

我有以下条目:

first_col,   second_col
  'john' ,   'chips'
  'john' ,   'candy bars'
  'luke' ,   'pop corn'

这样first_col的某些值可以(但不需要)second_col中的多个值(并且多重性不是常量)。我想检索与first_col关联的second_col的唯一值,它应该从现有的可能性中随机选择。例如,对于'John',我会随机选择'筹码'和'糖果棒'。

我正在使用Teradata,如果有帮助的话。

感谢。

3 个答案:

答案 0 :(得分:1)

不幸的是,我家里没有Teradata,但尝试这个决定(在oracle上)。简单地说,我将随机值添加到每一行并按其排序,并为每个组获取第一行

SELECT first_col,
  MAX(second_col) KEEP (DENSE_RANK FIRST ORDER BY num) as rand_second_col 
  FROM 
(SELECT first_col, second_col,dbms_random.value() as num
  FROM table)  tmp
  GROUP BY first_col

祝你好运

答案 1 :(得分:0)

你可以尝试这个

SELECT [col1],min([col2]) as col2,NEWID()
  FROM [testtable] group by [col1] order by NEWID()

我已经制作了一张包含以下数据的表格并且可以正常工作

col1    col2
john    chips
john    candy bars
luke    pop corn
john    ice

,输出

col1    col2              (No column name)
luke    pop corn    E8CCD6A2-27A8-4728-B16F-2B1EFEAFA8A1
john    candy bars  D135E1E0-5193-41F1-A5F9-B55F68CF6156

答案 2 :(得分:-1)

与大多数rdbms不同,teradata具有内置的采样功能。

select * from tablename
sample 10;

我不知道幕后的sample 10是什么。有趣的是,每次数据都不同,并返回了许多不同的值。