题解 | #筛选限定昵称成就值活跃日期的用户#
筛选限定昵称成就值活跃日期的用户
http://www.nowcoder.com/practice/2ed07ff8f67a474d90523b88402e401b
通过代码
SELECT
u_i.uid,
nick_name,
achievement
FROM
exam_record e_r
RIGHT JOIN
user_info u_i
ON
e_r.uid = u_i.uid
LEFT JOIN
practice_record p_r
ON
u_i.uid = p_r.uid
WHERE
(achievement BETWEEN 1200 and 2500
and u_i.nick_name LIKE '牛客_号')
and (e_r.start_time LIKE '_____09%'
OR month(p_r.submit_time) = 9)
GROUP by
u_i.uid
思路
请找到昵称以『牛客』开头『号』结尾、成就值在1200~2500之间,且最近一次活跃(答题或作答试卷)在2021年9月的用户信息。
挺简单的没啥说的。
但是,
我最开始的代码不长这样
因为题目上说了是最后一次活跃,也就是说得按时间排序逆序,完事后group by 看看这个时间是不是2021-09
但是问题就在这里了
这样做反而有问题
我看了看别人的通过代码才知道,原来是这个题有问题
或者是题目的测试用例有问题
题上说最后一次,可实际上只要有过就行!甚至不管是不是2021年的9月都可以,就像我的通过代码,只判断了月份依然给过了。
我说为什么这题挺简单,通过率却不高。
没事我们会写就行。
我这里用了通配符%表示任意多个任意字符_表示一个任意字符
一天一个Mysql 文章被收录于专栏
学习,一天一个mysql