题解 | #筛选昵称规则和试卷规则的作答记录#
筛选昵称规则和试卷规则的作答记录
http://www.nowcoder.com/practice/1c5075503ccf4de1882976b2fff2c072
RLIKE后面可以跟正则表达式。
正则表达式"^[0-9]+$"的意思:
1、字符^
意义:表示匹配的字符必须在最前边。
例如:^A不匹配“an A”中的‘A’,但匹配“An A”中最前面的‘A’。
2、字符$
意义:与^类似,匹配最末的字符。
例如:t$不匹配“eater”中的‘t’,但匹配“eat”中的‘t’。
3、字符[0-9]
意义:字符列表,匹配列出中的任一个字符。你可以通过连字符-指出字符范围。
例如:[abc]跟[a-c]一样。它们匹配“brisket”中的‘b’和“ache”中的‘c’。
4、字符+
意义:匹配+号前面的字符1次及以上。等价于{1,}。
例如:a+匹配“candy”中的‘a’和“caaaaaaandy”中的所有‘a’。
来源:可参考https://www.yulucn.com/question/4866556442
SELECT uid, exam_id, ROUND(AVG(score),0) avg_score FROM exam_record
WHERE uid IN (SELECT uid FROM user_info
WHERE nick_name RLIKE "^牛客[0-9]+号$" OR nick_name RLIKE "^[0-9]+$") AND
exam_id IN (SELECT exam_id FROM examination_info
WHERE tag RLIKE "^[cC]") AND
score IS NOT NULL
GROUP BY uid, exam_id
ORDER BY uid,avg_score;