问题是这样: 现在想实现的是从下边一堆数据中,随机抽取4个种类:A,B,C,D 让最后val的总值为960
数据表A中有两列
type, val
D 11
C 9
D 30
D 20
C 21
C 14
B 17
A 16
B 9
B 19
D 13
A 8
B 9
B 30
A 12
A 6
B 30
B 13
C 14
B 16
B 5
C 30
B 30
D 15
B 30
B 30
B 9
B 13
D 57
D 15
D 23
B 10
D 13
B 17
B 15
A 15
C 16
D 13
D 19
B 5
C 8
B 17
A 6
B 5
D 12
B 17
C 11
B 17
A 24
B 11
B 19
A 9
D 15
C 28
D 32
D 10
C 15
A 12
D 19
B 30
B 16
D 13
B 11
D 30
数据表A中有两列
type, val
D 11
C 9
D 30
D 20
C 21
C 14
B 17
A 16
B 9
B 19
D 13
A 8
B 9
B 30
A 12
A 6
B 30
B 13
C 14
B 16
B 5
C 30
B 30
D 15
B 30
B 30
B 9
B 13
D 57
D 15
D 23
B 10
D 13
B 17
B 15
A 15
C 16
D 13
D 19
B 5
C 8
B 17
A 6
B 5
D 12
B 17
C 11
B 17
A 24
B 11
B 19
A 9
D 15
C 28
D 32
D 10
C 15
A 12
D 19
B 30
B 16
D 13
B 11
D 30
解决方案 »
- 如何利用oms进行数据的导入导出工作!
- 往oracle 表中添加字段
- 用Odt.net连oracle,一直无法打开连接,若先用pl/sql连接后,就可以用Opt.net连接了
- 求助:Oracle启动中的问题
- oracle管理员是不是有个名称后缀,是什么来着
- 真奇怪,不可能吧!!一个Oracle链接Sql server的简单查询报错?
- 有没有办法只从Oracle数据库的全备份中取出某张表的备份数据?
- 菜鸟问题,如何引用不同的2个表的2个外键
- 请教关于job参数设置的问题!
- 在命令行方式下使用如下:@showsql.sql方式调用SQL文件
- oracle存储过程每天重置序列问题
- (本人小白)请教,设置了SGA、PGA,以后进程总是报内存错误!
意思就是4个种类,随机抽,不论怎么抽,最后总和得960.有可能A,B,C,D其中有一个或两个为空
最后的结果是什么?
A、B、C、D,或者是它们的任意组合? 但是要求结果是960?
按照A、B、C、D分别汇总
select type, sum(val) from table A group by type;
然后,看每个类型的值如何组合成960?
as
(
-- 类别 该类别值【抽1次】汇总 该类别值【抽2次】汇总 该类别值【抽3次】汇总
select type, sum(distinct val) as s1, sum(distinct val) * 2 as s2, sum(distinct val) * 3 as s3
from t
group by type
order by type
)
--- 所有的类别相加 【抽1次】【抽3次】【抽3次】
select 'SUMV' as type,sum(s1), sum(s2),sum(s3)
from s
union all
select *
from s
order by 1
也就是说,你那个960,必须得允许某个类别抽 2次+ 才行。
如果是那样,你这个其实不适合用sql实现,自己写个程序,从val池子中选择,保证存在 {2、3、4}种类型的值,抽多少次不管(当然你也可以限制最多次数,比方5次)得到960!
也就是说,你那个960,必须得允许某个类别抽 2次+ 才行。
如果是那样,你这个其实不适合用sql实现,自己写个程序,从val池子中选择,保证存在 {2、3、4}种类型的值,抽多少次不管(当然你也可以限制最多次数,比方5次)得到960!这个题目是细思极恐类的,类似于智能推导,像下象棋!!!