2024年最全SQL语句练习-入门篇

这篇博客提供了20个SQL语句练习,涵盖基础到高级的操作,包括选择、别名、过滤、聚合、分组、排序等,旨在帮助读者巩固SQL知识并提升查询能力。
摘要由CSDN通过智能技术生成

select device_id from user_profile

limit 0,2

SQL5 将查询后的列重新命名


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

select device_id as user_infos_example

from user_profile

limit 2

as 别名可省略

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


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

Select device_id ,university from user_profile

where university=“北京大学”

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


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

select device_id,gender,age,university from user_profile

where age>24

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


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

select device_id,gender,age from user_profile

where age BETWEEN 20 and 23

#where age >=20 and age <=23

between and 是闭区间注意

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


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

select device_id,gender,age,university from user_profile

#where university <> “复旦大学”

#where university != “复旦大学”

#where university not like “复旦大学”

where university not in ( “复旦大学”)

SQL10 用where过滤空值练习


  • 题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。

select device_id ,gender,age,university from user_profile

#where age not like" null"

#where age not in (" null")

#where age!=" null"

where age<>" null"

SQL11 高级操作符练习(1)


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

select device_id,gender,age,university,gpa from user_profile

where gender="male"and gpa>“3.5”

SQL12 高级操作符练习(2)


  • 题目:现在运营想要找到学校为北大或GPA在3.7以上(不包括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 (“北京大学”,“复旦大学”,“山东大学”)

where university not IN (“浙江大学”)

SQL14 操作符混合运用


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

select device_id,gender,age,university,gpa from user_profile

where (university=‘山东大学’ and gpa>3.5 )

or (university=“复旦大学” and gpa>3.8);

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


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

select device_id,age,university from user_profile

#where university like “%北京%”

WHERE university REGEXP “北京”

% :百分号 代表匹配0个或多个字符

_:一个字符

SQL16 查找GPA最高值


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

select max(gpa) from user_profile

where university =“复旦大学”

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


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

select count(gender) male_num,round(avg(gpa),1) avg_gpa

from user_profile

where gender=‘male’

round(a,b)返回a的第几位小数

SQL18 分组计算练习题


  • 用户信息表:user_profile

  • 30天内活跃天数字段(active_days_within_30)

  • 发帖数量字段(question_cnt)

  • 回答数量字段(answer_cnt)

select gender,

university,

count(gender) user_num,

avg(active_days_within_30 )avg_active_day,

avg(question_cnt) avg_question_cnt

from user_profile

group by gender ,university

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)

order by 默认升序排列

SQL21 浙江大学用户题目回答情况


题目:现在运营想要查看所有来自浙江大学的用户题目回答明细情况,请你取出相应数据

方法1:join两个表,用inner join  on a.device_id=b.device_id

select a.device_id,a.question_id,a.result

from question_practice_detail a

inner join user_profile b

on a.device_id=b.device_id

where b.university = “浙江大学”

方法2:先从画像表找到浙江大学的所有学生id列表

select device_id, question_id, result

from question_practice_detail

where device_id in (

select device_id from user_profile

where university=‘浙江大学’

)

SQL22 统计每个学校的答过题的用户的平均答题数


题目:运营想要了解每个学校答过题的用户平均答题数量情况,请你取出数据。

select distinct a.university ,COUNT(b.question_id)/COUNT(distinct(a.device_id)) avg_answer_cnt

from user_profile a inner join

question_practice_detail b

on a.device_id=b.device_id

group by university

  • 平均答题数量:在每个学校的分组内,用总答题数量除以总人数即可得到平均答题数量count(question_id) / count(distinct device_id)

SQL23 统计每个学校各难度的用户平均刷题数


题目:运营想要计算一些参加了答题的不同学校、不同难度的用户平均答题量,请你写SQL取出相应数据

select distinct a.university,c.difficult_level,count(b.question_id)/COUNT(distinct(b.device_id))

from user_profile a ,question_practice_detail b,question_detail c

where a.device_id=b.device_id

and b.question_id=c.question_id

group by a.university,c.difficult_level

SQL24 统计每个用户的平均刷题数


题目:运营想要查看参加了答题的山东大学的用户在不同难度下的平均答题题目数,请取出相应数据

select a.university ,c.difficult_level, count(b.question_id)/ count(distinct b.device_id) avg_answer_cnt

from user_profile a,question_practice_detail b,question_detail c

where

a.device_id=b.device_id and

b.question_id=c.question_id

and university=“山东大学”

SQL25 查找山东大学或者性别为男生的信息


题目:现在运营想要分别查看学校为山东大学或者性别为男性的用户的device_id、gender、age和gpa数据,请取出相应结果,结果不去重。

select device_id,gender,age,gpa

from user_profile

where university=“山东大学”

union all

select device_id,gender,age,gpa

from user_profile

where gender=“male”

union all 不去重

SQL26 计算25岁以上和以下的用户数量


题目:现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量

第一种方法:

select (case when age>=25 then ‘25岁及以上’ else ‘25岁以下’ end) age_cut,

count(device_id) as number from user_profile

group by age_Cut

CASE语句有两种形式:第一种评估一个或多个条件,并返回第一个符合条件的结果。 如果没有条件是符合的,则返回ELSE子句部分的结果,如果没有ELSE部分,则返回NULL:

第二种CASE句法返回第一个value = compare_value比较结果为真的结果。 如果没有比较结果符合,则返回ELSE后的结果,如果没有ELSE部分,则返回NULL:

第二种方法:

用IF

select if(age>=25,“25岁及以上”,“25岁以下”) age_cut,

count(device_id) as number from user_profile

group by age_Cut

第三种方法:

用union all将两个 SQL 语句的结果合并在一起

select ‘25岁以下’ as age_cut,count(device_id) as number

from user_profile

where age<25 or age is null

union all

select ‘25岁及以上’ as age_cut,count(device_id) as number

from user_profile

where age>=25;

SQL27 查看不同年龄段的用户明细


题目:现在运营想要将用户划分为20岁以下,20-24岁,25岁及以上三个年龄段,分别查看不同年龄段用户的明细情况,请取出相应数据。(注:若年龄为空请返回其他。)

select device_id,gender,

case

when age<20 then “20岁以下”

when age <25 then “20-24岁”

when age >=25 then ‘25岁及以上’

else “其他”

end age_cut

from user_profile

SQL28 计算用户8月每天的练题数量


题目:现在运营想要计算出2021年8月每天用户练习题目的数量,请取出相应数据。

select day(date) as day, count(question_id) as question_cnt

from question_practice_detail

where month(date)= 8

group by date

SQL29 计算用户的平均次日留存率


根据示例,你的查询应返回以下结果:

  • 滞后一天日期且前一天上线的唯一id的总数量) / (前一天上线的唯一id的总数量),

  • 用datediff区分第一天和第二天在线的device_id

  • 用left outer join做自表联结

SELECT COUNT(distinct q2.device_id,q2.date)/count(DISTINCT q1.device_id,q1.date) as avg_ret

from question_practice_detail

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的SQL接口。 它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。    结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。    美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。    SQL语言包含4个部分:    数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。    数据查询语言(DQL),例如:SELECT语句。    数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。    SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值