一个关于题目选项正确率的复杂查询
2017-09-12 18:25
155 查看
一个关于题目选项正确率的复杂查询
SELECT terqd.FOptionID,SUM(terqd.FIsSelect) FSelectNum , terq.FQuestionID,ter.FExamID INTO #tab FROM t_Exam_ResultQuestionDetail terqd INNER JOIN t_Exam_ResultQuestion terq ON terq.FID=terqd.FParentID INNER JOIN t_Exam_Result ter ON ter.FID=terqd.FMainID WHERE terqd.FParentID IN ( SELECT terq.FID FROM t_Exam_ResultQuestion terq WHERE terq.FParentID IN ( SELECT ter.FID FROM t_Exam_Result ter WHERE ter.FPaperID=1079 ) ) GROUP BY terqd.FOptionID,terq.FQuestionID,ter.FExamID ORDER BY terq.FQuestionID SELECT CASE WHEN tiq.FTypesID=3 THEN '单选题' WHEN tiq.FTypesID=4 THEN '多选题' WHEN tiq.FTypesID=201 THEN '判断题' END 题型 ,ti.FName 题目 ,tiqd.FName 选项 ,CASE WHEN tiqd.FIsCorrect=0 THEN '' ELSE '是' END 正确答案 --,tmp.FQuestionSelectNum 选择总次数 ,t.FSelectNum 选择次数 ,CAST(round(CAST(t.FSelectNum AS FLOAT) / CAST(tmp.FQuestionSelectNum AS FLOAT) * 100 , 2) AS VARCHAR(20))+'%' 选择率 FROM #tab t INNER JOIN t_Item ti ON t.FQuestionID=ti.FItemID INNER JOIN t_Item_Question tiq ON t.FQuestionID=tiq.FItemID INNER JOIN t_Item_QuestionDetail tiqd ON t.FOptionID=tiqd.FItemID INNER JOIN ( SELECT t.FQuestionID,SUM(FSelectNum) FQuestionSelectNum FROM #tab t GROUP BY t.FQuestionID ) tmp ON tmp.FQuestionID=t.FQuestionID ORDER BY t.FQuestionID
CREATE TABLE KangExam.dbo.t_Item ( FItemID INT NOT NULL ,FNumber VARCHAR(50) NULL ,FName VARCHAR(MAX) NOT NULL ,FItemClassID INT NOT NULL CONSTRAINT DF_t_Item_FItemClassID DEFAULT (0) ,FSpell VARCHAR(MAX) NULL ,FParentID INT NOT NULL CONSTRAINT DF_t_Item_FParentID DEFAULT (0) ,FDelete INT NOT NULL CONSTRAINT DF_t_Item_FDelete DEFAULT (0) ,FRemark VARCHAR(100) NULL ,FSearchKey VARCHAR(2000) NULL ,FSearchType INT NOT NULL DEFAULT (1) ,CONSTRAINT PK_t_Item PRIMARY KEY CLUSTERED (FItemID) ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE KangExam.dbo.t_Exam_Result ( FID INT NOT NULL ,FUserID INT NOT NULL ,FPaperID INT NOT NULL ,FExamID INT NOT NULL ,FCreateDate DATETIME NOT NULL ,FTotalScore DECIMAL(8, 2) NULL ,FScore DECIMAL(8, 2) NOT NULL DEFAULT (0) ,FResult INT NOT NULL DEFAULT (0) ,FCorrectQty INT NULL DEFAULT (0) ,FWrongQty INT NULL DEFAULT (0) ,FIsOutput INT NOT NULL DEFAULT (0) ,FOutputPath VARCHAR(100) NULL ,FBeginDate DATETIME NULL ,FDuration INT NOT NULL DEFAULT (0) ,FRank INT NOT NULL DEFAULT (0) ,CONSTRAINT PK_T_EXAM_RESULT PRIMARY KEY CLUSTERED (FID) ) ON [PRIMARY] GO CREATE TABLE KangExam.dbo.t_Exam_ResultQuestion ( FID INT NOT NULL ,FParentID INT NOT NULL ,FQuestionID INT NOT NULL ,FScore INT NOT NULL DEFAULT (0) ,FIsCorrect INT NOT NULL DEFAULT (0) ,FOrder INT NOT NULL DEFAULT (0) ,CONSTRAINT PK_T_EXAM_RESULTQUESTION PRIMARY KEY CLUSTERED (FID) ) ON [PRIMARY] GO CREATE TABLE KangExam.dbo.t_Exam_ResultQuestionDetail ( FID INT NOT NULL ,FOptionID INT NOT NULL ,FParentID INT NOT NULL ,FMainID INT NOT NULL ,FOrder INT NOT NULL DEFAULT (0) ,FIsSelect INT NOT NULL DEFAULT (0) ,CONSTRAINT PK_T_EXAM_RESULTQUESTIONDETAIL PRIMARY KEY CLUSTERED (FOptionID, FParentID, FMainID) ) ON [PRIMARY] GO
相关文章推荐
- 一个很好的关于多态的题目
- 关于Hibernate中如果一个实体类是 Set,怎么去查询数据
- 关于LINUX权限的一个题目
- 关于共享内存的一个题目(未完)
- 关于PL/SQL中复杂的存储过程或者是函数等的查询==避免在PL/SQL当中写SQL语句查询存储过程或者是函数
- 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,关于触发器SQL语句,完美解决
- 分享一个mysql 复杂查询的例子
- SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
- spring data elasticsearch的一个复杂查询条件
- 关于数据库查询的一个问题
- 关于树形结构的表与另外一个表的连接查询
- 分享一个mysql 复杂查询的例子
- 关于“操作必须使用一个可更新的查询”错误提示!
- 一个跨库复杂查询的SQL优化的案例
- 一个关于SQL的笔试题目及解答
- 关于数据库查询的一个问题
- 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。
- 关于Select option默认选中及查询后选项值保留的问题
- 一个关于字符串匹配的算法题目
- 一道关于比赛胜负的Sql查询题目