SQL1 查询多列

题目:现在运营同学想要用户的设备id对应的年龄、性别和学校的数据,请你取出相应数据

select device_id, gender,age,university from user_profile

SQL2 查询所有列

题目:现在运营想要查看用户信息表中所有的数据,请你取出相应结果


select * from user_profile

SQL3 查询结果去重

题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。

select distinct university from user_profile

select  university from user_profile group by university

SQL4 查询结果限制返回行数

题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。



select device_id from user_profile limit 2
select device_id from user_profile limit 0,2
--  limit Y 表示选Y个数据
--  limit x,y 表示从跳过x个数据,选y个数据

SQL5 将查询后的列重新命名

题目:现在你需要查看前2个用户明细设备ID数据,并将列名改为 'user_infors_example',,请你从用户信息表取出相应结果。

select device_id as user_infors_example  from user_profile limit 0,2

SQL6 查找学校是北大的学生信息

题目:现在运营想要筛选出所有北京大学的学生进行用户调研,请你从用户信息表中取出满足条件的数据,结果返回设备id和学校。

在这里插入图片描述

select device_id,university from user_profile where university ='北京大学'

在标准 SQL 中,字符串使用的是单引号。 如果字符串本身也包括单引号,则使用两个单引号(注意,不是双引号,字符串中的双引号不需要另外转义)。 但在其它的数据库中可能存在对 SQL 的扩展,比如在 MySQL 中允许使用单引号和双引号两种。

字符串指用单引号'或双引号"引起来的字符序列。例如: 'a string' "another string" 如果SQL服务器模式启用了NSI_QUOTES,可以只用单引号引用字符串。用双引号引用的字符串被解释为一个识别符。

SQL7 查找年龄大于24岁的用户信息

题目:现在运营想要针对24岁以上的用户开展分析,请你取出满足条件的设备ID、性别、年龄、学校。

SELECT device_id,gender,age,university
FROM user_profile
WHERE age>24;

SQL8 查找某个年龄段的用户信息

题目:现在运营想要针对20岁及以上且23岁及以下的用户开展分析,请你取出满足条件的用户明细数据。

在这里插入图片描述


SELECT device_id,gender,age
FROM user_profile
where age>=20 and age<=23
-- where age between 20 and 24

SQL9 查找除复旦大学的用户信息

题目:现在运营想要查看除复旦大学以外的所有用户明细,请你取出相应数据

select device_id,gender,age,university
from user_profile
where university != '复旦大学'
-- where university not like '复旦大学'
-- where university not in ('复旦大学')

SQL10 用where过滤空值练习

题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户明细数据。


SELECT device_id,gender,age,university 
FROM user_profile 
where age is not NULL  
-- where age!=''
-- where age<>''



SQL11 高级操作符练习(1)

题目:现在运营想要找到男性且GPA在3.5以上的用户进行调研,请你取出相关数据。

SELECT device_id, gender, age, university,gpa
FROM user_profile
WHERE gpa >3.5 AND gender ='male'

SQL12 高级操作符练习(2)

题目:现在运营想要找到学校为北大或GPA在3.7以上的用户进行调研,请你取出相关数据


select device_id,gender,age,university,gpa from user_profile where university = '北京大学' OR gpa > 3.7;

SQL13 Where in 和Not in

题目:现在运营想要找到学校为北大、复旦和山大的同学进行调研,请你取出相关数据。


select device_id ,gender, age, university, gpa
from user_profile
where university IN ("北京大学","复旦大学","山东大学");

SQL14 操作符混合运用

题目:现在运营想要找到gpa在3.5以上的山东大学用户 或 gpa在3.8以上的复旦大学同学进行用户调研,请你取出相应数据


SELECT  device_id,gender,age,university,gpa
FROM user_profile
where (gpa > 3.5 and university = '山东大学') OR (gpa > 3.8 and university = '复旦大学') ;

查看学校名称中含北京的用户

题目:现在运营想查看所有大学中带有北京的用户的信息,请你取出相应数据。

select device_id,age,university
from user_profile
where university like '%北京%';

SQL16 查找GPA最高值

题目:运营想要知道复旦大学学生gpa最高值是多少,请你取出相应数据


SELECT gpa
FROM user_profile
WHERE university='复旦大学' 
ORDER BY gpa DESC
LIMIT 0,1

select max(gpa) from user_profile where university='复旦大学'





select gpa from (
    select gpa,university
    from (
        select gpa ,
        university,

        row_number() over(partition by university order by gpa desc) as ranking

        from user_profile

        ) as temp
    where temp.ranking=1

    )as temp1 
 where temp1.university ='复旦大学'

附加题 取出所有学校的最高值



    select gpa,university
    from (
        select gpa ,
        university,

        row_number() over(partition by university order by gpa desc) as ranking

        from user_profile

        ) as temp
    where temp.ranking=1

    
3.7|北京大学
3.8|复旦大学
3.3|浙江大学
3.3|清华大学

SQL17 计算男生人数以及平均GPA

题目:现在运营想要看一下男性用户有多少人以及他们的平均gpa是多少,用以辅助设计相关活动,请你取出相应数据。

select
  count(gender)  male_num,
  round(avg(gpa),1)  avg_gpa
from user_profile GROUP BY gender having gender ='male'

SQL18 分组计算练习题

题目:现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。


SELECT gender,university,count(gender) as user_num,
avg(active_days_within_30) as avg_active_days,avg(question_cnt) as avg_question_cnt
from user_profile
GROUP by university,gender;

SQL19 分组过滤练习题

题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。



SELECT university,
avg(question_cnt) as avg_question_cnt,
avg(answer_cnt) as avg_answer_cnt
from user_profile
GROUP by university
having  avg_question_cnt < 5 or  avg_answer_cnt<20

SQL20 分组排序练习题

题目:现在运营想要查看不同大学的用户平均发帖情况,并期望结果按照平均发帖情况进行升序排列,请你取出相应数据。

select university,avg(question_cnt) AS avg_question_cnt from user_profile
group by university 
order by avg_question_cnt

获取资料

关注公众号:孙中明 ; 输入 3003 获取MySQL相关书籍