首页 > 解决方案 > 抽样组而不是行

问题描述

我想根据组 ID(ColA)而不是行随机选择。假设我的初始表是这样的:

+---------------------+
|ColA   | ColB | ColC |
+---------------------+
| AA       C        5 |      
| AA       C        8 |     
| AA       C        9 |      
| BB       D        3 |      
| BB       D        4 |    
| CC       E        1 |    
| CC       E        2 |     
| CC       E        3 |     
| CC       E        5 |    
+---------------------+

我想得到这样的东西:

+---------------------+
 ColA  | ColB |   ColC 
+---------------------+
| AA       C        5 |      
| AA       C        8 |     
| AA       C        9 |    
| CC       E        1 |      
| CC       E        2 |      
| CC       E        3 |     
| CC       E        5 |      
+---------------------+

因此,假设我想从 Col A 随机获取整个分组。我已经这样做了,但它给了我随机行而不是组

SELECT distinct  ColA,ColB, ColC FROM TABLE
ORDER BY  RAND()
LIMIT 20000

我将不胜感激有关如何实施它的任何线索。

标签: sqlrandompandas-groupbyamazon-athenapresto

解决方案


根据您的描述,您可以在子选择中使用单列查询:

SELECT *
FROM dataset
WHERE ColA IN (
        SELECT *
        FROM (
                SELECT distinct ColA 
                FROM dataset
            )
        ORDER BY rand()
        LIMIT 2
    )

推荐阅读