Sql 基于列的数据采样

Sql 基于列的数据采样,sql,Sql,我们正试图从大量样品中制作一个样品,用于测试。 具体的数据如下所示 CustomerId Customer_name PurchaseId Purchase date 1234 Robert Benson ABC123 12/07/2012 1218 Gary Thomas PP122 26/01/2013 1254 Robert Sharma PML563 27/04/2012 1218

我们正试图从大量样品中制作一个样品,用于测试。 具体的数据如下所示

CustomerId   Customer_name  PurchaseId Purchase date  
1234         Robert Benson  ABC123      12/07/2012
1218         Gary Thomas    PP122           26/01/2013
1254         Robert Sharma  PML563      27/04/2012
1218         Gary Thomas    PR124       06/03/2013
1234         Benson Cruiso  LML123      14/07/2012
1234         Martha Cruiso  FMPL123     15/07/2012
我希望结果数据如下:

GroupID  CustomerId   Customer_name  PurchaseId Purchase date  
1   1218         Gary Thomas    PR124       06/03/2013
1   1218         Gary Thomas    PP122           26/01/2013
2   1234         Robert Benson  ABC123      12/07/2012
2   1234         Benson Cruiso  LML123      14/07/2012
2   1234         Martha Cruiso  FMPL123     15/07/2012
3   1254         Robert Sharma  PML563      27/04/2012

基本上,我希望有一个额外的一列,它将根据一列(即此处的CustomerId)标识一组的行。

这是当前客户ID在唯一客户ID排序列表中的位置。要获取排序列表中的位置,请计算有多少较小的值:

SELECT (SELECT COUNT(*)
        FROM (SELECT DISTINCT CustomerID
              FROM MyTable) AS UniqueIDs
        WHERE UniqueIDs.CustomerID <= MyTable.CustomerID
       ) AS GroupID,
       *
FROM MyTable;

我删除了不一致的数据库标记。请随意为您真正使用的数据库添加标记。即使中的数据在CustomerId上未排序,它也能够在提供排序位置的同时对其进行排序。或者在执行查询之前,数据应该在CustomerId列上进行排序当计算行时,这些行的顺序并不重要。如果我们在多个列上进行相同的排序,查询会是什么样子?这将是一个不同的问题。