互联网岗位:市场和商业分析师,老板,策略方向工程师,产品经理
信息流业务:推荐——关键指标:dau日活;留存;点击率;停留时间;打开数;平路互动;分享转发
数据分析——第一步:
EXCEL
数据分析——第二步:
牛客网刷题——MySQL
题号 | 题目即链接 | 知识点 |
SQL1 | 查找最晚入职员工的所有信息 | 【入门】 日期比较可以用order by,然后加limit限制 limit 跳过的数量,要取出的数量 |
SQL2 | 查找入职员工时间排名倒数第三的员工的所有信息 | 【简单】 limit 2,1 |
SQL4 | 查找所有已经分配部门的员工的last_name,first_name以及dept_no | 【简单】 内连接:from 表1 join 表2 on 条件 |
SQL7 | 查找薪水记录超过15次的员工号以及其对应的记录次数 | 【简单】 分组+聚合函数+having子句 |
SQL8 | 找出所有员工当前薪水情况 | 【简单】 去除重复记录:select distinct 列名 from 表名 注:仅对一列数据有效;仅可使用一次;只能在第一个列名前使用 |
SQL10 | 获取所有非manager的员工emp_no | 【简单】 有点难理解题目。 外连接:left join 其实都一样吧 保留左表的 |
SQL15 | 查找employees表 | 【简单】 奇数判断:%2=1;不相等:!=或者is not |
SQL17 | 获取当前薪水第二多的员工以及对应的薪水 | 【简单】 order by+limit |
SQL32 | 将所有员工的last_name和first_name拼接起来作为name | 【简单】 concat(last_name,' 这里加空格',first_name) |
SQL34 | 批量插入数据 | 【简单】 insert into 表名 values (),(); |
SQL42 | 删除重复记录只保留最小id对应的记录 | 【简单】 mysql不允许在子查询的同时删除原表数据,所以可以把查询结果取别名再删除 |
SQL43 | 将所有to_date为9999-01-01的全部更新为NULL | 【简单】 update 表名 set 列名1=值1,列名2=值2 where ; |
SQL44 | 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005 | 【简单】 直接使用update会报错。 update 表名 set 列名 replace (列名,实际数字,替换数字) where ; |
SQL45 | 修改表名 | 【简单】 alter table 表名 rename 新表名 |
SQL62 | 出现三次以上相同积分的情况 | 【简单】 group by having 两个必须同时出现,采用聚合函数count,想在条件里使用聚合函数必须使用having子句,那么前面就必须有group by |
SQL64 | 找到每个人的任务 | 【简单】 left join |
SQL66 | 牛客每个人最近的登录日期(一) | 【简单】 最近的登录日期 max(date) 聚合函数只能出现在select子句里面;或者group by having聚合函数 group by 语句中,select中只能包含group by 后面的分组以及聚合函数 |
SQL72 | 考试分数(一) | 【简单】 分数保留三位小数 round(分数,3) |
SQL77 | 牛客的课程订单分析(一) | 【简单】 条件用where ,和用and ,或用名字 in (' ' ,' ' ) |
SQL84 | 实习广场投递简历分析(一) | 【简单】 记得分组group by |
SQL3 | 查找当前薪水详情以及部门编号 | 【中等】 连接的表要注意哪个要保留哪个在前,只能用左连接 |
SQL5 | 查找所有员工的last_name和frist_name以及对应部门编号 | 【中等】 表左连接 大表在前,使用外连接 |
SQL11 | 获取所有员工当前的manager | 【中等】 没做出来,采用了内连接inner join貌似和join表示同一种 最后加上条件 |
SQL16 | 统计出当前各个title类型对应的员工当前薪水对应的平均工资 | 【中等】 表连接 join |
SQL19 | 查找所有员工的last_name和first_name以及对应的dept_name | 【中等】 三表连接,和两个表一样 |
SQL22 | 统计各个部门的工资记录数 | 【中等】 三表连接 count是计数,有多少条记录,sum是求和,不包含null值 count(*)包含null值,count(列名)不包含null值 |
SQL29 | ||
SQL30 | ||
SQL33 | 创建一个actor表 | 【中等】 create table 表名( , ,); |
SQL35 | 批量插入数据,不能用replace操作 | 【中等】 3种插入数据的方法: 1.insert into 数据库会检查主键,如果重复则会报错 2.replace into如果数据库中已存在数据,则用新数据替换,没有数据和insert into效果一样 3.insert ignore into如果表中已存在相同的记录,则忽略当前新数据 |
SQL36 | 创建一个actor_name表 | 【中等】 3中创建表方法 1.常规创建create table 表名(); 2.复制表格 create 目标表 like 原表 3.将表1一部分拿来创建表2:分为两步——第一步,create table 表名 ( );第二步,insert into 表名 select ** from *; 记住第二步不能加values |
SQL37 | 创建唯一索引和普通索引 | 【中等】 1.添加主键:alter table 表名 add primary key (列名) 2.添加唯一索引:alter table 表名 add unique 索引名 (列名) 3.添加普通索引:alter table 表名 add index 索引名 (列名) 4.添加全文索引 :alter table 表名 add fulltext 索引名 (列名) 附:删除索引: drop index 索引名 on 表名; alter table 表名 drop index 索引名; |
SQL38 | 创建视图 | 【中等】 1.create view 视图名 as select * as * from 表名 2.create view 视图名(列名) as select * from 表名 |
SQL39 | 创建强制索引 | 【中等】 select * from 表名 force index ( ) 强制索引速度很快 |
SQL40 | 新增一列 | 【中等】 alter table 表名 add 列名 数据类型 default 值 |
SQL41 | 构造一个触发器 | 【中等】 在向employees_test表中插入一条数据的时候,触发插入相关的数据到audit中 create trigger 触发器名 定义了NEW 和 OLD,用来表示触发器的所在表中,触发了触发器的那一行数据。OLD 用来表示将要或已经被删除的原数据。NEW 用来表示将要(BEFORE)或已经(AFTER)插入的新数据 |
SQL46 | 在audit表上创建外键约束,其emp_no对应employees_test表的id | 【中等】 alter table 表名 add constraint foregin key (列名) references 关联表名 (关联列) |
SQL48 | 将所有获取奖金的员工当前的薪水增加10% | 【中等】 update 表名 set 字段1=条件1,字段2=条件2 where 条件 |
SQL50 | 将last_name和first_name通过‘谅解起来 | 【中等】 select concat (last_name, "'",first_name) from 表名 |
SQL51 | 查找字符串中逗号出现的次数 | 【中等】 把串 "10,A,B" 中的 逗号用空串替代, 变成了 "10AB" select (length("10,A,B") - length(replace("10,A,B", ",", "")) ) |
SQL52 | 获取first_name按照最后两个字母升序排列 | 【中等】 order by right(列名,几个字母)asc; |
SQL53 | 按照dept_no进行汇总 | 【中等】 group_concat()函数将group by产生的同一个分组中的值连接起来,返回一个字符串结果。 |
SQL54 | 查找排除当前最大最小薪资之后的员工平均薪资 | 【中等】 not in 选择语句当做整体 |
SQL55 | 分页查询employees表,每5行一页,返回第2页的数据 | 【中等】 limit 跳过的数量,要取的数量 |
SQL57 | 使用含有关键字exists查找未分配具体部门的员工的信息 | 【中等】 not exists与not in用法一样,含义也一样 |
SQL63 | 刷题通过的题目排名 | 【中等】 窗口函数: row_rank() over (order by * desc) as * 没有重复值的排序(即使有两个记录相等也不重复),可以利用他来实现分页,如1,2,3,4 dense_rank() over (order by * )连续排序,两个第二名仍然跟着第三名,如1,2,2,3 rank()跳跃排序,两个第二名下来就是第四名,如1,2,2,4 |
SQL73 | 考试分数(二) | 【中等】 分步来求,有些难,我不太会 |
SQL78 | 牛客的课程订单分析(二) | 【中等】 同一个用户下单——group by having解决where里面不能添加聚合函数,并且having放在group by 后面 |
SQL79 | 牛客的课程订单分析(三) | 【中等】 含有group by函数的语句中,select中只能出现group by后面的分组以及聚合函数,不能出现其他选项,因此此题不能用group by 函数。选择窗口函数 但是我不会用窗口函数??? |
SQL82 | 牛客网的课程订单分析(六) | 【中等】 不会???? |
SQL85 | 实习广场投递简历分析 | 【中等】 1.如果需要两个排序的顺序,中间用逗号隔开 2.日期函数格式转换 date_format(date, '%Y-%m-%M-%k),%Y表示--年4位,%m表示--月,数值(00-12),%M表示--月名,%k表示--小时(0-23) |
SQL87 | ||
SQL89 | ||
数据分析——第三步:
python与MySQL交互
#首先下载MySQL Connector模块
#1.创建连接
import mysql.connector
con = mysql.connector.connnect(
host='localhost',post='3306',user='root',password='password',database='demo');
#2.执行连接
cursor = con.cursor()
cursor.execute(sql语句)
#3.提交
con.commit()
线上互联网:后台日志 linux命令、shell编程
销售商业:数据库,外部第三方
平台:数据可视化——tableau WEB和bi可视化