【发布时间】:2013-08-29 14:46:39
【问题描述】:
我正在与 Oracle 合作,但遇到了我不知道如何解决的问题。 我有很多商店,每家都卖 3 件商品。 我需要为每家商店的这 3 个项目中的每一个选择随机记录, 但每家商店的记录数量不得超过10条 并且每家商店必须至少出售每件商品。
我现在的选择为每个商店选择 10 条记录 但它选择了一项(通常是最后一项)
select *
FROM
(select store_id,item_id, product_name
row_number() over(partition by store_id order by item_id) as MyCount
from table5 order by dbms_random.value)
where MyCount<=10
如何让它为每个商店选择所有 3 个项目和
样本数据:
Id Store_ID Item_ID Product_ID
------------------------------
1 11723 13048841 2
2 11723 13332688 2
3 11723 08981562 4
4 11723 08872923 4
5 11723 01030632 5
6 11723 01029557 5
7 11723 01010174 5
8 11723 01031526 5
9 11723 01032479 5
10 11723 01000285 5
【问题讨论】:
-
我认为您应该将
order by dbms_random.value放入您的分区中,而不是 item_id。你能展示一些示例数据吗? -
谢谢!它有点帮助。我现在在结果中有 2 个项目,而不是 1 个。它仍然没有选择所有 3 个。
-
其实你说的很对!那家店只卖2件。另一个选择具有所有 3 个值。非常感谢!
-
不幸的是,该代码不一定会选择所有 3 个项目,有时只会选择 2 个。我如何确保选择所有 3 个项目?
-
你能展示一些示例数据吗?或创建sqlfiddle