数据分析学习

互联网岗位:市场和商业分析师,老板,策略方向工程师,产品经理

信息流业务:推荐——关键指标: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 触发器名
after或者before insert或者update或者delete  on employees_test
for each row
begin 
    insert into audit values (new.id, new.name);
end

定义了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", ",", "")) )
as cnt;

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可视化

Guess you like

Origin blog.csdn.net/weixin_45823221/article/details/117442921