这里主要是 MySQL 刷题相关笔记,方便后面温习和查阅,希望可以帮到大家!!!
请计算每张SQL类别试卷发布后,当天5级以上的用户作答的人数uv和平均分avg_score,按人数降序,相同人数的按平均分升序。
SELECTexam_id,count( DISTINCT uid ) AS uv,ROUND(avg( score ), 1) AS avg_score
FROM exam_record
WHERE (exam_id, DATE(start_time)) IN (SELECT exam_id, DATE(release_time)FROM examination_info WHERE tag = "SQL"
) AND uid IN ( SELECT uid FROM user_info WHERE `level` > 5 )
GROUP BY exam_id
ORDER BY uv DESC, avg_score ASC;
给你一张试卷作答记录表,一张题目练习记录表,请你查询出其中每张试卷和每道题目被作答过的人数和作答的次数,最后按照人数和作答次数的顺序逆序排列
order by uv desc, pv desc
order by uv desc, pv desc
select * from () exam union select * from () practice
。知识点:unionselect * from (select exam_id as tid,count(distinct uid) uv,count(*) pvfrom exam_recordgroup by exam_idorder by uv desc ,pv desc
) a
union all
select * from (select question_id as tid,count(distinct uid) uv,count(*) pvfrom practice_recordgroup by question_idorder by uv desc ,pv desc
) b
请写出一个SQL实现:输出2021年里,所有每次试卷得分都能到85分的人以及至少有一次用了一半时间就完成高难度试卷且分数大于80的人的id和活动号,按用户ID排序输出。
year(e_r.submit_time) = 2021
e_i.difficulty = 'hard'
e_r.score > 80
timestampdiff(minute, e_r.start_time, e_r.submit_time) * 2 < e_i.duration
select uid , 'activity1' as activity
from exam_record
where year(submit_time) = 2021
group by uid
having min(score) >= 85
union all
select distinct b.uid, 'activity2' as activity
from examination_info a
join exam_record b on a.exam_id = b.exam_id
where year(b.submit_time) = 2021
and a.difficulty = 'hard'
and b.score > 80
and timestampdiff(minute,b.start_time,b.submit_time) * 2 < a.duration
order by uid
关注林哥,持续更新哦!!!★,°:.☆( ̄▽ ̄)/$:.°★ 。
下一篇:svg的深度利用绕过waf