数据分析学习

力扣刷题 同时被 2 个专栏收录
5 篇文章 0 订阅
3 篇文章 0 订阅

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

信息流业务:推荐——关键指标: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可视化

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值