SQL19 未完成试卷数大于1的有效用户
题目
现有试卷作答记录表exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分),示例数据如下:
还有一张试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间),示例数据如下
select
a.uid
,count(a.start_time)-count(a.submit_time) cnt_im
,count(a.submit_time)
,group_concat(distinct concat_ws(':',date(a.start_time),b.tag) separator';' )
from
exam_record a
left join examination_info b
on a.exam_id = b.exam_id
where
year(a.start_time)=2021
group by
a.uid
having
count(a.start_time)-count(a.submit_time)>1
and count(a.start_time)-count(a.submit_time)<5
order by
cnt_im desc;
函数
concate_ws
CONCAT_WS(separator,str1,str2,...)
--使用分隔符将不同字段连接起来
group_concat
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
将同一列中相同/不同的行连接起来,通过group by 分组
concat
concat(str1,str2)
连接不同的字段,没有分隔符,默认为空格
sepeat
repeat(str,number)
将字段复制几遍