SQL
qingyuliu_
这个作者很懒,什么都没留下…
展开
-
【学习】10、综合练习:统计复旦用户8月练题情况
题目: 作为牛客网的数据分析师,现在运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况,请取出相应明细数据,对于在8月份没有练习过的用户,答题数结果返回0。select u.device_id,u.university,sum(q.question_id and month(q.date)=8) as question_cnt,sum(if(q.result='right' and month(q.date)=8,1,0)) as right_question_cntfrom原创 2021-09-18 18:43:50 · 632 阅读 · 0 评论 -
【学习】9、窗口函数:找出每个学校GPA最低的同学
题目:作为牛客网的数据分析师,现在运营想要找到每个学校gpa最低的同学来做调研,请你取出相应数据。方一:SELECT device_id, university, gpaFROM user_profileWHERE gpa IN( # IN 可替换为 = ANY SELECT min(gpa) FROM user_profile GROUP BY university)GROUP BY university # 保证学校名不重复ORDER BY university;原创 2021-09-16 22:11:44 · 1015 阅读 · 0 评论 -
【学习】8、文本函数:截取出年龄
题目:作为牛客网的数据分析师,现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个年龄的用户分别有多少参赛者,请取出相应结果。方一:select SUBSTRING(profile,12,2) as age,count(*) as numberfrom user_submitgroup by age方二:使用SUBSTRING_INDEX函数嵌套,第一层取出年龄和性别数据,第二层取出年龄数据。select SUBSTRING_INDEX(SUBSTRING原创 2021-09-15 14:46:51 · 219 阅读 · 0 评论 -
【学习】7、文本函数:提取博客URL中的用户名
题目:对于申请参与比赛的用户,blog_url字段中url字符后的字符串为用户个人博客的用户名,现在运营想要把用户的个人博客用户字段提取出单独记录为一个新的字段,请取出所需数据。方一:select device_id,SUBSTRING_INDEX(blog_url,'/',-1) as user_namefrom user_submit方二:利用 replace 替换掉无效数据select device_id,replace(blog_url,'http:/url/','')from use原创 2021-09-15 14:38:05 · 313 阅读 · 0 评论 -
【学习】6、文本函数:统计每种性别的人数
题目:作为牛客网的数据分析师,现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个性别的用户分别有多少参赛者,请取出相应结果。截取函数:1、LOCATE(substr , str ):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,则返回0;2、POSITION(substr IN str ):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,与LOC原创 2021-09-15 14:30:49 · 767 阅读 · 0 评论 -
【学习】日期函数:5、计算用户的平均次日留存率
题目:作为牛客网的数据分析师,现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率。请取出相应数据。date_sub(expr1,expr2):从日期减去指定的时间间隔。expr1为需要计算的字段名,expr2为需要计算的值,如interval 1 day;因为表格中用户ID可能存在重复,所以在表格自连接之前先对字段去重筛选,即 select distinct device_id,date from 表格,之后再进行自连接;题中计算的为留存率,即次日的用户数/今日的用户数,因此需用到左自连接原创 2021-09-15 14:23:05 · 962 阅读 · 0 评论 -
【学习】4、日期函数:计算用户8月每天的练题数量
题目:作为牛客网的数据分析师,现在运营想要计算出2021年8月每天用户练习题目的数量,请取出相应数据。Select day(date) as day, count(question_id) as question_cntFrom question_practice_detailWhere year(date)=2021 and month(date)=08Group by day...原创 2021-09-15 14:21:38 · 574 阅读 · 0 评论 -
【学习】3、条件查询:查看不同年龄段的用户明细
题目:作为牛客网的数据分析师,现在运营想要将用户划分为20岁以下,20-24岁,25岁及以上三个年龄段,分别查看不同年龄段用户的明细情况,请取出相应数据。运算符case……when 条件 then ……else ……end as……select device_id,gender,case when age<20 then '20岁以下' when age between 20 and 24 then '20-24岁' when age>=25 then '25岁以原创 2021-09-15 14:19:53 · 642 阅读 · 0 评论 -
【学习】2、条件查询:计算25岁以上和以下的用户数量
题目:作为牛客网的数据分析师,现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量。方一:select '25岁以下' age_cnt,count(device_id)as Numberfrom user_profilewhere age<25 or age is nullUNION ALLselect '25岁及以上' age_cnt,count(device_id)as Numberfrom user_profilewhere age>=2原创 2021-09-15 14:18:52 · 1075 阅读 · 0 评论 -
【学习】1、组合查询:查找山东大学男生的GPA
题目:作为牛客网的数据分析师,现在运营想要分别查看学校为山东大学或者性别为男性的用户的device_id、gender、age和gpa数据,请取出相应结果,结果不去重。select device_id,gender,age,gpafrom user_profilewhere university='山东大学'union ALLselect device_id,gender,age,gpafrom user_profilewhere gender='male'...原创 2021-09-15 14:17:15 · 359 阅读 · 0 评论 -
【简单】SQL3、 查找所有已经分配部门的员工的last_name和first_name以及dept_no
方一:SELECT e.last_name,e.first_name,d.dept_noFROM employees AS e,dept_emp AS dWHERE e.emp_no=d.emp_no;方二:employees表中的dept_no有可能为NULL;但dep_emp表中的dept_no一定不为NULL,所以使用内部联结,去除dept_no为NULL的employees。联结时,如果需要把dept_no=NULL的数据也列出,要使用外部联结 LEFT/RIGHT OUTER JOI原创 2021-09-11 16:59:18 · 93 阅读 · 0 评论 -
【简单】SQL2、查找入职员工时间排名倒数第三的员工所有信息
SELECT * from employeesWHERE hire_date=( SELECT hire_date FROM employees ORDER BY hire_date DESC LIMIT 2,1);原创 2021-09-11 16:45:59 · 95 阅读 · 0 评论 -
【入门】SQL1、查找最晚入职员工的所有信息
方一:排序SELECT * FROM employeesORDER BY hire_date DESCLIMIT 0,1;改进:SELECT * FROM employeesWHERE hire_date = ( SELECT hire_date FROM employees ORDER BY hire_date DESC LIMIT 1 OFFSET 0);方二:使用子查询SELECT * FROM employeesWHERE hire_date =(原创 2021-09-10 16:59:38 · 221 阅读 · 0 评论