描述:首先一個考試裏面有不同的評分項,還有不同的評分老師,每個老師的權重還不一樣,
第一條計算已經評分的跟總共需要評分的總數,判斷老師是否都已經對每個選項都已經進行評分了(所有評分是否結束)
SELECT t8.*,SUM(1) reviewed FROM (SELECT
t5.id course_id,sum(1) totalRecord
FROM
exp_score_option t1
JOIN EXP_PROJECT_SCORE_OPTION t2 ON t1.id = t2.exp_score_option_id
JOIN exp_course t5 ON t5.exp_id = t2.exp_project_id
JOIN exp_group t3 ON t5.score_users_id = t3.group_id
JOIN exp_score_group t4 ON t4.group_id = t3.group_id
join exp_result t6 on t6.COURSE_ID = t5.id where t5.ID = 21 and t6.CLIENT_IP is not null GROUP BY t5.ID) t8
LEFT JOIN exp_score_record t7 ON t7.course_ID = t8.course_id GROUP BY t7.COURSE_ID;
第二條是根據不同的老師不同權重評分 ,因爲這裏一個考試有不同的評分選項,一個課程有不同的學生參加考試,每個考試有不同的評分老師,這裏只根據課程查詢學生的每個選項的加權平均分
SELECT COURSE_ID,STU_ID,SCORE_ID,SCORE_USER_ID,SCORE_NUM,SCORE_TIME,WEIGHT
, SUM(WEIGHT), SUM(WEIGHT*SCORE_NUM)
, SUM(WEIGHT*SCORE_NUM) / SUM(WEIGHT)
FROM (
SELECT t1.* ,IFNULL(t4.WEIGHT,1.0) WEIGHT
FROM exp_score_record t1
LEFT JOIN exp_course t3 ON t1.COURSE_ID =t3.ID
LEFT JOIN exp_score_group t4 ON t3.SCORE_USERS_ID = t4.group_id AND t1.SCORE_USER_ID = t4.USER_ID WHERE t1.course_id = 21
) u1 GROUP BY COURSE_ID,STU_ID,SCORE_ID ;