您的位置:首页 > 其它

一个关于题目选项正确率的复杂查询

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: