我有一个基于基本标准的查询,它会在任何一天返回X个记录。
我正在尝试检查基本查询的结果,然后根据X的总数对其应用百分比拆分并将其拆分为2个存储桶。每个存储桶将占X中返回的总查询结果的百分比。
例如:
查询A返回3500条记录。
如果从查询A返回的记录数为< = 3000,则将3500条记录拆分为40%/ 60%分割(1,400 / 2,100)。
如果从查询A返回的记录数为> = 3001且< = 50,000,则将记录拆分为10%/ 90%split.Etc。等等。
我想要返回实际记录,而不仅仅是记录中的数学,它返回一行中带有数字的行(在列中)。
答案 0 :(得分:4)
我不确定您希望如何显示生成的行集的不同部分,因此我刚刚在包含值{{1}的结果行集中添加了其他列(part
) }表示该行属于第一部分,1
- 第二部分。
2
为了更好的可用性,您可以使用上面的查询创建视图,然后按select z.*
, case
when cnt_all <= 3000 and cnt <= 40
then 1
when (cnt_all between 3001 and 50000) and (cnt <= 10)
then 1
else 2
end part
from (select t.*
, 100*(count(col1) over(order by col1) / count(col1) over() )cnt
, count(col1) over() cnt_all
from split_rowset t
order by col1
) z
列查询该视图过滤。
Demo #3使用视图。