-
去重 distinct 关键字
eg. :
select distinct university from user_profile
-
返回行数限制 : limit关键字
eg. :
select device_id from user_profile limit 2
-
返回列重命名 :as 关键字
eg.:
select device_id as user_infos_example from user_profile limit 2
-
指定关键字排序 :order by 关键字(ASC升序,DESC降序):
eg:
select device_id,age from user_profile order by age asc
-
统计总数 + 模糊条件筛选 : count + where + like
eg.:
sql
select
count(distinct device_id) as did_cnt,
count(question_id) as question_cnt
from question_practice_detail
where date like "2021-08%"
-
判断非空 : is not null
eg.:
select device_id,gender,age,university from user_profile where age is not null
-
多条件判断 : where in / not in
eg.:
sql
select device_id, gender, age ,university, gpa
from user_profile
where university in ('北京大学','复旦大学','山东大学')
- 正则表达式 :使用regexp 进行正则匹配
正则表达式匹配的字符类:
. :匹配任意单个字符。
^ :匹配字符串的开始。
$ :匹配字符串的结束。
*****:匹配零个或多个前面的元素。
+ :匹配一个或多个前面的元素。
? :匹配零个或一个前面的元素。
[abc] :匹配字符集中的任意一个字符。
[^abc] :匹配除了字符集中的任意一个字符以外的字符。
[a-z] :匹配范围内的任意一个小写字母。
[0-9] :匹配一个数字字符。
\w :匹配一个字母数字字符(包括下划线)。
\s:匹配一个空白字符。
eg.:
sql
select id,name,phone_number
from contacts
where phone_number regexp '^[1-9][0-9]{2}-?[0-9]{4}-?[0-9]{4}$'
-
取最大值 : max
eg.:
select max(gpa) as gpa from user_profile where university = '复旦大学'
-
规定小数点位数及统计平均值 : round + avg
ROUND 函数用于把数值字段舍入为指定的小数位数。
用法为:
SELECT ROUND(column_name,decimals) FROM table_name
eg.:
sql
select count(gender) as male_num,
round(avg(gpa),1) as avg_gpa
from user_profile
where gender = 'male'
- 分组查询 : group by
eg.
sql
select gender,university,
count(device_id) as user_num,
round(avg(active_days_within_30),1) as avg_active_day,
round(avg(question_cnt),1) as avg_question_cnt
from user_profile
group by gender,university
order by gender asc,
university asc
注意: 由于group by后的输出不可预估,因此在笔试时可能会出现仅使用group by 无法通过测试用例的情况,此时需按用例示范追加 order by !!!
- 分组后条件过滤 : having
eg.:
sql
select university,
round(avg(question_cnt),1) as avg_question_cnt,
round(avg(answer_cnt),1) as avg_answer_cnt
from user_profile
group by university
having avg_question_cnt < 5 or avg_answer_cnt < 20
- 多表查询- 内连接 :inner join ,注意应指定列。
eg.:
sql
select q.device_id,q.question_id,q.result
from question_practice_detail as q
inner join user_profile as up
on q.device_id = up.device_id and up.university = '浙江大学'