数据分析师对sql的要求,数据库分析师有前途吗

首页 > 教育培训 > 作者:YD1662023-05-03 06:01:04

在数据类岗位招聘过程中,经常会考察求职者的SQL能力,这里整理了3个常考的SQL数据分析题,按照由简单到复杂排序,一起来测试一下你掌握了么?

PS:以下SQL代码在MySQL8.0及其以上版本运行。

题目1:找出每个部门工资第二高的员工

现有一张公司员工信息表employee,表中包含如下4个字段。

employee表的数据如下表所示。

数据分析师对sql的要求,数据库分析师有前途吗(1)

还有一张部门信息表department,表中包含如下两个字段。

department表的数据如下表所示。

数据分析师对sql的要求,数据库分析师有前途吗(2)

数据导入的代码如下:

DROP TABLE IF EXISTS employee; CREATE TABLE employee( employee_id VARCHAR(8), employee_name VARCHAR(8), employee_salary INT(8), department VARCHAR(8) ) ENGINE = InnoDB DEFAULT CHARSET = utf8; INSERT INTO employee (employee_id,employee_name,employee_salary,department) VALUE ('a001','Bob',7000,'b1') ,('a002','Jack',9000,'b1') ,('a003','Alice',8000,'b2') ,('a004','Ben',5000,'b2') ,('a005','Candy',4000,'b2') ,('a006','Allen',5000,'b2') ,('a007','Linda',10000,'b3'); DROP TABLE IF EXISTS department; CREATE TABLE department( department_id VARCHAR(8), department_name VARCHAR(8) ) ENGINE = InnoDB DEFAULT CHARSET = utf8; INSERT INTO department (department_id,department_name) VALUE ('b1','Sales') ,('b2','IT') ,('b3','Product');

问题:查询每个部门薪资第二高的员工信息。

输出内容包括:

结果样例如下图所示。

数据分析师对sql的要求,数据库分析师有前途吗(3)

可供参考的解题思路:使用窗口函数根据部门ID分组,在组内按照员工薪资降序排列并记为ranking,然后将该处理后的表和部门信息表进行内连接,从而把部门名称关联进来,最后在连接后的表上使用ranking=2作为薪资第二高的条件进行WHERE筛选,选择需要的列,即可得到结果。

涉及知识点:窗口函数、子查询、多表连接。

本题的SQL代码如下,供读者参考:

SELECT a.employee_id ,a.employee_name ,a.employee_salary ,b.department_id FROM ( SELECT * ,RANK() OVER (PARTITION BY department ORDER BY employee_salary DESC) AS ranking FROM employee ) AS a INNER JOIN department AS b ON a.department = b.department_id WHERE a.ranking = 2;

题目2:网站登录时间间隔统计

现有一张网站登录情况表login_info,该表记录了所有用户的网站登录信息,包含如下两个字段。

login_info表的数据如下表所示。

数据分析师对sql的要求,数据库分析师有前途吗(4)

首页 1234下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.