【问题标题】:SQL : select n. random groups from a tableSQL:选择 n。表中的随机组
【发布时间】:2021-08-12 21:07:00
【问题描述】:

我在 Bigquery 上有一个如下所示的表:

authorId text     textid 
--------------------------     
12         bla      234
22         cat      134
22         fish    1312
33         dog      432
33         catcall  442
12         ..  
53
..

这个表非常大,有超过 1 亿个作者 ID。我想从这些作者中抽取 n=1000 个随机作者和每一行。我该怎么做?

n=2 的预期结果如下所示

authorId text     textid 
------------------------    
12         bla      234
33         dog      432
33         catcall  442
12         ..  
..

我正在考虑创建一个随机作者列表,然后选择作者 ID 出现在列表中的行,但我不确定这是继续进行的最佳方式。

如果是这样,我可以创建一个具有唯一 ID 的表,如下所示,但我不知道如何基于此子集 table1..

WITH table2 AS 
(
    SELECT authorId  
    FROM table1  
    GROUP BY authorId 
    ORDER BY RAND() 
    LIMIT 1000
)

【问题讨论】:

    标签: sql random group-by google-bigquery


    【解决方案1】:

    试试这个:

    WITH table2 AS 
    (
        SELECT distinct authorId  
        FROM table1  
        ORDER BY RAND() 
        LIMIT 1000
    )
    select *
    from table1 JOIN table2 using (authorId)
    

    【讨论】:

    • 您可能需要JOIN 而不是,
    • 谢谢@GordonLinoff
    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 2016-06-17
    • 2016-05-06
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    相关资源
    最近更新 更多