select一位顾客的随机订单
select a random order of a customer
我有 table 个客户和他们的订单。我想 select 每个客户的随机订单。
示例table
customer | orders
---------+---------
customerA| Order1
customerA| Order2
CustomerA| Order3
customerB| Order1
customerB| Order2
customerB| Order3
CustomerC| Order1
customerC| Order2
结果table
customer | orders
---------+---------
customerA| Order2
customerB| Order1
CustomerC| Order1
有办法吗?
您可以使用 row_number()
(和 ANSI 标准函数)。但是,计算随机数因数据库而异。这是想法:
select t.*
from (select t.*,
row_number() over (partition by customer order by random()) as seqnum
from t
) t
where seqnum = 1;
一些随机数函数:
- SQL 服务器:
newid()
- Postgres:
random()
- 甲骨文:
dbms_random.value
- 天睿数据:
random(1, 999999999)
- DB2:
rand()
- SAP 花:
rand()
我有 table 个客户和他们的订单。我想 select 每个客户的随机订单。
示例table
customer | orders
---------+---------
customerA| Order1
customerA| Order2
CustomerA| Order3
customerB| Order1
customerB| Order2
customerB| Order3
CustomerC| Order1
customerC| Order2
结果table
customer | orders
---------+---------
customerA| Order2
customerB| Order1
CustomerC| Order1
有办法吗?
您可以使用 row_number()
(和 ANSI 标准函数)。但是,计算随机数因数据库而异。这是想法:
select t.*
from (select t.*,
row_number() over (partition by customer order by random()) as seqnum
from t
) t
where seqnum = 1;
一些随机数函数:
- SQL 服务器:
newid()
- Postgres:
random()
- 甲骨文:
dbms_random.value
- 天睿数据:
random(1, 999999999)
- DB2:
rand()
- SAP 花:
rand()