SQL中想从指定表取出数据,满足取出数据集 某字段某值占该取出数据的百分比条件。从数据库表取数据

例如,该表里面有题型,难度字段。要使取出的数据集,满足题型为单选题的占30%,判断题占70%,满足难度为难的占20%,难度为易的占80%。这两个比例需同时满足。从数据库表... 例如,该表里面有题型,难度 字段。要使取出的数据集,满足题型为单选题的占30%,判断题占70%,满足难度为难的占20%,难度为易的占80%。这两个比例需同时满足。从数据库表取数据需满足结果集里面这两个字段各自的值所占结果集的百分比。谢谢!
如果再加上两个条件,类型:概念题(20%)、原理题(30%)、公式题(50%)。章节:第一章(10%)、第二章(20%)、第三章(30%)、第四章(15%)、第五章(25%)。那么同时满足题型、难度、类型、章节这四个条件各自百分比,怎样的算法比较好点?谢谢!单选题、判断题各自的题目数量和分值是确定的。主要是数据库取出记录满足多个字段值所占结果集比例。
展开
 我来答
hit_lubin
2011-04-22 · TA获得超过7888个赞
知道大有可为答主
回答量:1554
采纳率:100%
帮助的人:1988万
展开全部
这个有个挺重要的问题,首先必须要确定题量,就是要出多少道题,否则如果单纯根据这个比例,那数据库也没办法判断一共要取多少出来。
所以这个题量一定要确定,确定之后,每种题取多少个也就知道了,同时这个问题也就变得容易了。
分别取出每种题的集合,然后SQLSERVER用TOP N来取N条,ORACLE用WHERE ROWNUM <= N来取前N条,把几种做一个UNION ALL,这样就组合出来了一套题了。
另外,SQLSERVER不能用select top 3*2这样的方法取前六条,会有错误,一定要先确定每种取多少,然后用select top n这样的形式。
畅夏侯岚0O
2011-04-22 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:123
采纳率:0%
帮助的人:64.9万
展开全部
select top 总题量*0.3*0.2 * from 表 where 题型='单选题' and 难度='难'
union
select top 总题量*0.3*0.8 * from 表 where 题型='单选题' and 难度='易'
union
select top 总题量*0.7*0.2 * from 表 where 题型='判断题' and 难度='难'
union
select top 总题量*0.7*0.8 * from 表 where 题型='判断题' and 难度='易'
这是sqlserver查询,其中总体量确定,然后算出题数代替“总题量*0.3*0.2” 等
如果是oracle 就是在条件里加rownum<=总题量*0.3*0.2
自己理解吧,你加的条件可以按照上面的代码以此类推
追问
嗯,我想的也是这种方法。不过感觉总共SQL语句需要很多句,2*2*3*5=60句。
追答
嗯,没办法的,你要用命令提取,那只能一部分一部分拼出来。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
典怀玉L9
2011-04-25 · 超过14用户采纳过TA的回答
知道答主
回答量:247
采纳率:0%
帮助的人:128万
展开全部
设要选N道题
选概念题且难的题型N*20%*20%
选概念题且简单的题型N*20%*80*

选原理题且难的题型N*30%*20%
选原理题且简单的题型N*30%*80*
以此类推,最后即在总量上实现难度比值为2:8,每个题的比值也为2:8
即某题型数量=该题型难题(总题量*该题型比值*难度占比值)+该题型简单题(总题量*该题型比值*难度占比值)

如果用一条语句的话,感觉很难实现,只有这样一点一点的选了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianzhiwen163
2011-04-22 · TA获得超过123个赞
知道小有建树答主
回答量:142
采纳率:100%
帮助的人:126万
展开全部
我的解决办法不是最好的,我对算法不是很了解。所以,我给出一个我解决的这个问题的实现。首先,你做的考试系统应该明确一张考卷一共多少题目。还要同事明确题型和每个题型下的数量。看你的要求很明确了。我们假设一张考卷是100题。然后那,就是判断难度了。实用java数据数,然后确定你的具体题目。这样就可以组装成一张试卷了。我不知道我说的是否清楚
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式