从表中选择随机记录,但是对于每个区域;来自4个地区的3个记录,以及其余2个地区的18个记录

时间:2018-06-09 16:27:24

标签: sql oracle select oracle11g

我需要一些帮助,找出如何从Oracle表中超过10000条记录的表中选择总共30条随机记录。我已经在其他地方寻找,但其他解决方案似乎都在从每个类别中选择相同数量的随机记录。如果有帮助,我正在使用Oracle SQL Developer。

我的查询需要从4个区域中的每个区域中选择3个随机记录,但也要从其他2个区域中选择总共18条记录。随机记录的总数应为30,并且在每次运行查询时都不应包含重复记录。

我们有6个销售区域(红色,蓝色,绿色,黑色,橙色,紫色),我们想要随机奖励来自红色,蓝色,绿色和黑色地区的3个推销员;而且还从橙色和紫色的其他两个地区随机奖励了18名推销员。

这是我到目前为止所拥有的。我对SQL不是那么先进,所以我请你好心。

我未能弄清楚如何从橙色和紫色区域的组合中选择18个。

select * from
       ( select salesman_id,sales_region,supervisor, row_number()
                over (partition by sales_region order by dbms_random.value) as num_row
         from   sales_table
         group by salesman_id,sales_region,supervisor )
where num_row <=3;

1 个答案:

答案 0 :(得分:2)

你基本上有正确的想法。您只需要将橙色和紫色区域视为一个区域,并为不同区域设置不同的条件:

{{1}}