第1课:使用SQL探索产品数据
1、什么是SQL?
SQL,Structured Query Language结构化查询语言是目前对数据库进行查询和编辑的主流编程语言。
通常来说,一个数据库会包含一个或多个表,在SQL的数据表中,每一行也会被称为一个记录,而每一列也会被称为字段。
2、关键的数据处理环节
![a7495f1a6a3ff9bf2d67d8bfdfd0e96b.png](https://i-blog.csdnimg.cn/blog_migrate/a775b36f4594c59afb0ea41a0d09a35f.png)
3、SQL学习的注意事项
- 标点符号只可以使用英文
- SQL语句以英文分号(;)结尾
- 表名字段名一定不能写错
- SQL语句对于大小写不敏感
第2课:我们获得的数据是什么样子的?
1、使用DESC语句 获取表中数据字典
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述。DESC 语句
- 作用:DESC 语句用于显示数据字典
- 语法:DESC 表名
- 举个栗子: 显示启动表的数据字典
DESC run_info;
2、使用SELECT查询数据
select 语句用于从表中选取数据,结果被存储在一个结果表中。
SELECT 语句
- 作用:SELECT 语句用于查询数据表中的数据
- 语法:SELECT 字段名 FROM 表名
- 举个例子:查询用户表中所有字段数据 select * from user_id_info;
3、使用LIMIT语句查询特定行数数据
在上述select 的语句结尾部分再加上SQL中的限制语句limit语句
LIMIT 语句
- 作用:限制查询数据的行数。
- 语法:SELECT 字段名 FROM 表名 LIMIT 行数;
- 举个例子:查询用户表中前五行数据 select * from user_id_info limit 5;
第3课:如何用WHERE筛选产品功能?
1、使用WHERE筛选数据
WHERE 语句
- 作用:WHERE 语句对数据按照特定的条件去进行筛选。
- 语法:SELECT 字段名 FROM 表名 WHERE 条件
![9c5d6676e8cc76398da97c9de0939307.png](https://i-blog.csdnimg.cn/blog_migrate/e5a9bfc149a492225e2ae8413ab26308.jpeg)
- 语句思路
第一步:确定查询的表与查询的字段
第二步:撰写条件语句
确定筛选条件
撰写对应的条件语句
第三步:将查询语句补充完整
第4课:如何用ORDER BY进行排序 ?
RDER BY 语句
- 定义:可以实现将显示结果按照特定字段进行排序的效果。
- 语法:SELECT 字段名 FROM 表名 ORDER BY 字段名。
- 补充知识:ORDER BY语句默认为升序排序,如要降序排序,则在字段名后加DESC。
第5课:如何用CASE WHEN分组?
CASE WHEN 语句
- 作用:根据是否满足语句中的判断条件会落入不同的取值,是对数据进行重新分类整理和命名。
- 语法:
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
END- 以 CASE 为起点
- WHEN...THEN... 成对出现
- END 作为终点
AS 语句
- 作用:对变量进行命名以及重命名
- 语法:原变量名 AS 新变量名
- 通常 CASE WHEN 语句后会通过 AS 给长长的语句起一个小名
今日份小任务:
![385f274a8a2e286968e8b019898d4c11.png](https://i-blog.csdnimg.cn/blog_migrate/aaec18ae3cce7452d53dfbbb1cef03cb.png)
![4511c2c814922b7af6a97fb7e1952427.png](https://i-blog.csdnimg.cn/blog_migrate/b3a38d3732f0d65e1be684a15f813638.png)
答案1:
SELECT m_date,m_use_time,m_function,
CASE
WHEN m_function='install' THEN '安装'
WHEN m_function='uninstall' THEN '卸载'
ELSE '功能'
END AS a
FROM use_function_info
ORDER BY m_date,m_use_time desc;
答案2:
SELECT m_date,m_use_time,m_function,
CASE
WHEN m_function='install' THEN '安装'
WHEN m_function='uninstall' THEN '卸载'
WHEN m_function IN ('function_a','function_b','function_c') THEN '功能'
END AS a
FROM use_function_info
ORDER BY m_date,m_use_time desc;
第6课:如何进行数据清洗?
在数据清洗的环节,我们将会使用到 UPDATE 以及 DELETE 语句。
![bee7562ff76b2ad5495f4230f369450a.png](https://i-blog.csdnimg.cn/blog_migrate/420fd2d9cbfd4348ff482317c650b062.png)
1、UPDATE语句
- 作用:更新表中具体字段的信息
- 语法:UPDATE 表名 SET 字段='更新内容' WHERE 条件
第一步:数据检查
使用SELECT语句检查gender是否存在异常值
使用DISTINCT对数据去重(DISTINCT在之后会详细讲解)
SELECT DISTINCT gender from user_id_info;
![9c77a98c19723293a99ce22e58dfb557.png](https://i-blog.csdnimg.cn/blog_migrate/969e5baf86c391a7221534945753d4ad.png)
运行后,发现异常值:男人
第二步:查看异常数据
使用WHERE语句,筛选出异常数据
在这里,就是筛选出gender为男人的数据
SELECT * FROM user_id_info
WHERE gender='男人';
![84e2b3871ebe7b954b65bcfaa00f6935.png](https://i-blog.csdnimg.cn/blog_migrate/f49e5091d22ac9bb96a2bdb7085096d6.png)
第三步:数据清洗
使用UPDATE语句进行字段更新
UPDATE 表名 SET 字段='更新内容' WHERE 条件
UPDATE user_id_info
SET gender='男'
WHERE gender='男人';
第四步:数据复查
再次使用SELECT语句,查看异常值是否被清洗
SELECT DISTINCT gender from user_id_info;
2、DELETE语句
- 作用:删除表中具体字段的信息
- 语法:DELETE FROM 表名 WHERE 条件
DELETE VS UPDATE
- DELETE:当数据非常多,或我们不清楚正确的值时,就直接使用DELETE将异常值删除
- UPDATE:当知道正确的值或者删除异常值对数据整体有影响时,就使用UPDATE进行更新
第7课:如何用COUNT计算
1、COUNT函数的定义
- 作用:COUNT 函数是用来统计个数的函数,它的主要功能是查询满足条件的记录总数,也就是行数。
- 语法:COUNT(字段名)。
2、COUNT函数的使用场景
- COUNT 常见的使用场景有2个:
- 场景一:统计数据的总行数—— COUNT(*)
- COUNT(*)的作用和SUM(1)一致
- 场景二:统计特定字段的个数——COUNT(DISTINCT 字段名)
- 场景一:统计数据的总行数—— COUNT(*)
今日份小任务:
![84d9fcccc084e59419920f09ac4537c3.png](https://i-blog.csdnimg.cn/blog_migrate/0ce4a8f1a1deaf89a36bacceec39535e.png)
答案1:
SELECT COUNT(DISTINCT user_id)
FROM use_function_info
WHERE m_function='install';
SELECT COUNT(DISTINCT user_id)
FROM use_function_info
WHERE m_function='uninstall';
答案2:
SELECT m_function,COUNT(DISTINCT user_id)
FROM use_function_info
WHERE m_function IN ('install','uninstall')
GROUP BY m_function;
3、SUM / AVG / COUNT 函数
- SUM 与 AVG 的作用与语法
- SUM——求和;AVG——平均值
- 语法:SELECT SUM(字段名),AVG(字段名) FROM 表名;
- SUM 与 COUNT 函数的区别
- COUNT 函数:统计对应字段名符合条件的行数
- SUM函数:对应字段数值求和
今日份小任务:
- 从功能表中,计算功能C的人均耗时与平均耗时
- 功能C和功能A、功能B在使用耗时上有什么不同?
答案1:
SELECT m_function,SUM(m_use_time)/COUNT(DISTINCT user_id),AVG(m_use_time),COUNT(*)/COUNT(DISTINCT user_id)
FROM use_function_info
WHERE m_function='function_A';
SELECT m_function,SUM(m_use_time)/COUNT(DISTINCT user_id),AVG(m_use_time),COUNT(*)/COUNT(DISTINCT user_id) FROM use_function_info WHERE m_function='function_B';
SELECT m_function,SUM(m_use_time)/COUNT(DISTINCT user_id),AVG(m_use_time),COUNT(*)/COUNT(DISTINCT user_id) FROM use_function_info WHERE m_function='function_C';
答案2:
SELECT m_function,SUM(m_use_time)/COUNT(DISTINCT user_id),AVG(m_use_time),COUNT(*)/COUNT(DISTINCT user_id)
FROM use_function_info
WHERE m_function IN ('function_a','function_b','function_c')
GROUP BY m_function;
第8课:如何用GROUP BY统计?
1、GROUP BY 语句
- 作用:GROUP BY语句可以实现按照特定字段包含的分类进行汇总计算的效果(比如求最小值,最大值,平均值、求和等等)
- 语法:SELECT 函数(字段名) FROM 表名 GROUP BY 字段名
拓展知识:
- ORDER BY语句的书写顺序在GROUP BY语句之后
今日份小任务:
- 从功能表中,计算不同日期、不同功能的使用次数以及使用用户数。
- 代码思路:
- 搭建代码框架
- 找到功能表 use_function_info
- 筛选出使用功能的数据 WHERE...IN
- 按照日期、功能聚合数据 GROUP BY
- 查询 日期,功能,使用次数,使用用户数
SELECT m_date,m_function,COUNT(*),COUNT(DISTINCT user_id)
FROM use_function_info
WHERE m_function IN ('function_a','function_b','function_c')
GROUP BY m_date,m_function;
![26b65a9cb5eb47e2df1cf4d2885ec340.png](https://i-blog.csdnimg.cn/blog_migrate/01af1f371e5b79246f1996c728676f36.png)
第9课:如何用JOIN查询多个数据表?
1、JOIN 语句
- 作用:JOIN语句的作用是将两张数据表进行拼接。
- 语法:SELECT 字段1 FROM 表1 JOIN 表2 ON 表1.字段2 = 表2.字段2
- JOIN的两边是需要进行链接的两张表
- ON后面的部分则是通过哪个字段去进行表与表的连接
- 比较常见的3种JOIN语句是JOIN/LEFT JOIN以及RIGHT JOIN。
![82f1d8369a2b9ed7a8807390c922bb45.png](https://i-blog.csdnimg.cn/blog_migrate/a6ff0411b11313daf1309ced548d4359.jpeg)
a JOIN b
- 同时匹配JOIN语句左边与右边的表的全部记录。
- 生成的是两个表的交集。
a LEFT JOIN b
- a表为主表
- 产生a表的完全集
- b表中匹配的则有值,没有匹配的则以null值取代
a RIGHT JOIN b
- b表为主表
- 产生b表的完全集
- a表中匹配的则有值,没有匹配的则以null值取代。
到这里SQL部分的关键知识点就差不多了,想到学好还是要不断练习、练习、再练习的。
比较详细的SQL语句可以查看以下:
Venus:SQL初探:SQL基础与查询语句zhuanlan.zhihu.com