题解 | #未完成试卷数大于1的有效用户#(有一些纰漏,还请担待一些)

未完成试卷数大于1的有效用户

http://www.nowcoder.com/practice/46cb7a33f7204f3ba7f6536d2fc04286

这题我的问题是:

1.detail 如何插入多个数据 其中包含里面的 日期和tag

最后看完答案找到的解决思路。

写 detail 的思路是先用 concat 将日期对应的tag一并提取出来,然后对他们进行 ,其中distinct 是用来 对取出的数据进行区分的

因为有可能会出现 某一张试卷在同一天被做过之后 然后又不小心被自己打开(原因之一),但是因为做过不想浪费时间就没有做,导致试卷一直搁置在哪里了

再使用 group_concat 来进行分组 分组是依据的 uid为条件进行的分组。和第二种的区别只是少了一个 order by

----------------------------------------------------------------------------------------------------------------


#

select uid,
       count(ww) as incomplete_cnt,
       count(pp) as complete_cnt,#  这行我刚开始是直接选择用score去求,因为count 是具有去null的作用的,但是看输入案例发现有一列 1003 9001有个小BUG有分无提交时间  但是我们是按照submit_time来区分的,所以就出现了错误
#       concat(data_format(start_time,'%Y%m%d'),':',tag)
       
       GROUP_CONCAT(distinct CONCAT(DATE_FORMAT(start_time,'%Y-%m-%d'),':',tag) order by start_time SEPARATOR ";") as detail
#↓----↓----↓----↓----↓----↓----↓第二种快一些的取出具体日期的方法↓----↓----↓----↓----↓----↓----↓----↓----↓----↓----↓----↓----↓----↓
#      group_concat(distinct concat_ws(':', date(start_time), tag) SEPARATOR ';') as detail

from 
(
select uid,score,
       case when submit_time is null then 1 else null end as ww,
       case when submit_time is not null then 1 else null end as pp,
       tag,
       start_time
from exam_record er
left join examination_info ei on er.exam_id = ei.exam_id
) a#  其实也可以使用 连接直接取出数据了,但是我为了 方便理解一些 选择了这种方法:就是先做出一个新的表格,里面包含了题干要求的信息,
   #  然后我再在这个新表里面取出我想要取出的数据


where year(start_time) = '2021'   #  写的时候还少了这行   老是忘记了这个条件
group by uid
having incomplete_cnt > 1 and complete_cnt >=1 and incomplete_cnt <5  #  本来这两行只写有一行 where,然而where 是不能使用新的列名的,这个我给忘了,需要使用having  ing嘛说明是可以使用表格里面的新列名的。
order by uid desc
全部评论
为什么不能直接写1 < incomplete_cnt < 5,
1 回复 分享
发布于 2022-08-19 17:18 重庆
里面也有一些自己在写题的时候出错时候的改错和标记的错误
点赞 回复 分享
发布于 2022-03-10 21:07

相关推荐

头像
昨天 12:47
已编辑
中国地质大学(武汉) Java
你出生在农村,与其它农村小孩子无异小学时你对成绩没有概念,只感觉上课不听课也是无聊,只知道不写完作业会被老师罚站一到考试,自己成绩总是名列靠前,即使偶尔落后,你也从不在意中学时你觉得课本的东西很简单,随便学学就会了,并没有大量刷题你总是想不通,那些所谓的数学物理中难题,明明是在送分,为什么你的同学总是想不出解题方法高中时这三年你过的不容易,晚睡早起,给了自己很多压力.但是你也发现自己是有些小聪明的,你感觉班里有些同学很刻苦,但成绩比你差远了。那些数学题和物理题的陷阱,同学一遍遍踩坑,但是你总能发现并避开它们.“为了父母的期盼,为了恩师的厚望,为了天赐的智慧,为了青春的理想......”“天行健...
创作助手_刘北:其实,这种已经是神童级别的了,不费吹灰之力就能拿到自己想要的东西,就像机器按照程序走了一遍,就像我小时候看爱情公寓,觉得他们都很惨,几个人只能挤在一个房间里合租,但是好在他们有一群非常好的朋友,随着时间的推移,慢慢长大了,在看爱情公寓的时候,觉得他们都很厉害,博士、留学生、***、电台公子,数学天才,任何一个都是我可望而不可即的,更别说可以在异地认识一群更好的朋友了,所以呢,人还是要自给自足,满足当下,不要攀比,意气风发的且有理想的18岁少年永远都存在,只不过随着时间的推移他被你包裹在了洋葱的最深处。
点赞 评论 收藏
分享
在看数据的傻狍子很忙碌:学生思维好重,而心很急,自己想想真的能直接做有难度的东西吗?任何错误都是需要人担责的,你实习生可以跑路,你的同事领导呢
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务