SQL可以用来return分布式样本集吗?

Can SQL be used to return a distributed sample set?

我需要一个示例数据集,主要是为了减少行数,以便可以将示例加载到一个 Excel sheet 中。

我查看了分析函数和这个 Ask Tom post,但我无法获得我需要的结果,主要是因为我看不到我的需求能够利用分析分组。

这是数据的表示形式。每一行都是独一无二的。 Cat_No 是主键。

      CAT_NO |PROD_CODE   |DESCRIPTION |COLOR |
        SH1  |SH          |Shirt       |Blue  |
        SH2  |SH          |Shirt       |Red   |
        BT1  |BT          |Belt        |Black |
        BT4  |BT          |Belt        |Brown |
        WT1  |WT          |Watch       |Silver|
        WT6  |WT          |Watch       |Gold  |

是否可以编写 SQL 查询,将 return 一行包含每个 PROD_CODE 的所有列?如果,是什么?

希望有一个 ANSI SQL 解决方案,因为我必须同时使用 PSQL 和 TSQL。此外,即使表可能有数百万行,性能也不是一个重要的考虑因素。这是一次性执行以获得文档的示例数据。

例如,结果可能如下所示:

      CAT_NO |PROD_CODE   |DESCRIPTION |COLOR |
        SH1  |SH          |Shirt       |Blue  |
        BT4  |BT          |Belt        |Brown |
        WT6  |WT          |Watch       |Gold  |

每个PROD_CODE一行。任何行都可以接受。

select * 
from 
(  select *
        , row_number() over (partition by PROD_CODE order by CAT_NO) as rn 
   from table 
)  tt
where tt.rn = 1 

如果根据 prod_code 返回的数据无关紧要,您可以使用 row_number() over (partition by prod_code order by cat_no) as row_num 并在 row_num = 1.

上过滤结果集

像这样:

SELECT CAT_NO, PROD_CODE, DESCRIPTION, COLOR 
FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY PROD_CODE ORDER BY CAT_NO) AS row_num
  FROM TABLE
) t
WHERE t.row_num = 1

而且,这也有效:

  SELECT *
    FROM TABLE T
    WHERE T.CAT_NO IN (SELECT MAX(T1.CAT_NO) FROM TABLE T1 GROUP BY PROD_CODE)