SQL数据分析之数据提取、数据查询、数据清洗【MySQL速查】

文章目录

    • 一、数据提取
    • 二、数据查询
      • 1、选取数据(select)
      • 2、筛选(where)
      • 3、范围匹配(IN)
      • 4、排序(order by)
      • 5、条件筛选(case when)
    • 三、数据清洗
    • 四、数据分组
    • 五、连接查询

一、数据提取

1、获得用户表、启动表与功能表
(1)用户表:用户个人信息与订单信息

(2)启动表:日期、时间等

(3)功能表:是否成功、功能、渠道、耗时等

注意:当进入数据分析岗位,需要向数据部门获得数据时必须把关键字段列出来,数据部门才会将相应字段下的数据发给我们。

2、获取数据字典(desc)
数据字典指的就是数据表中的关键字段与关键字段信息;

语法示例:desc user_info; --分号不能少;

也就是宏观查看数据字段。

二、数据查询

1、选取数据(select)

(1)语法示例:select * from user_info; --选取用户信息表中的所有数据

以上的*代表所有内容,关于SQL语句的具体语法规则与详细分析,请参阅:
MySQL数据库基础(数据表的SELECT操作)

(2)查询特定行数(limit)
语法示例:select * from user_info limit 10; --查看数据表前10行数据,无排序

2、筛选(where)

(1)语法结构:select 字段名 from 表名 where 筛选条件;

(2)精准匹配:>、<、=、>=、<=

(3)单条件筛选:

select * from d_function where if_install='install';
--从功能表中找出所有软件已经安装的行

(4)筛选的逻辑操作符:AND表示且(两真才真),OR表示或(一真即真)

(5)多条件筛选:

select * from d_function where if_install='install' AND date='2022-4-15';  
--从功能表中找出条件为软件已安装 且 日期为2022年4月15日的行

(6)注意:当在MySQL中同时用到AND和OR时,AND的执行优先级高于OR。也就是说,在没有小括号()的限制下,总是优先执行AND语句,再执行OR语句。因此,条件很多时为了防止弄混,建议加上小括号()进行优先级限制。

(7)having的用法
①having和where的区别:
having对分组过后的数据进行过滤(而where是分组之前的),不过能用where的地方都可以用having替换

②having用法示例:

--用name分组过后,求每一组jquery的成绩总和,最后筛选jQuery成绩总和大于150的成绩对应的name
select name, sum(jQuery) from ExamResult group by name having sum(jQuery)>150;--统计JS成绩大于80的name的个数
select count(name) from ExamResult where JavaScript>80;--计算所有name的JS平均分:JavaScript总分/name个数
select sum(JavaScript)/count(name) from ExamResult;

(8)逻辑运算符
2.2.1

3、范围匹配(IN)

(1)作用:让SQL能返回某个变量部分指定值的结果

(2)格式:IN(值1,值2,值…值n),满足任一值,即满足了where的筛选条件

(3)语句示例(IN实现):

select * from d_function  where if_install IN ('install','uninstall') AND date='2022-4-15';
--从功能表中找出所有满足“已安装或未安装,且日期未2022年4月15日”的行

(4)上述示例的OR实现:

select * from d_function  where (if_install='install' OR if_install='uninstall') AND date='2022-4-15';
--从功能表中找出所有满足“已安装或未安装,且日期未2022年4月15日”的行

通过对比可以发现,IN实现就是OR的简便写法,当有很多个条件需要进行OR筛选时,则可以都放进IN的参数中进行条件判断。

4、排序(order by)

(1)作用:将特定字段进行排序

(2)语法结构:select 字段名 from 表名 order 字段名;

(3)默认是升序排序,加上desc则为降序

(4)在已安装软件中按照日期进行降序排序:

select * from d_function 
where if_install='install' 
order by date desc;

5、条件筛选(case when)

(1)作用:根据是否满足语句中的判断条件选取不同的取值,可以对数据进行重新分类、整理和命名。

(2)语法结构:

CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
ELSE 默认结果
END

(3)筛选成功交易和失败交易的所有订单创建时间和收货地址:

select 订单创建时间,收货地址,
case
when 退款金额=0 then '成功交易'
when 退款金额>0 then '失败交易'
else '无效'
end
from 天猫订单;

注意:这里的case…when筛选语句是在select下面的,因此筛选结果会将case…when的筛选结果新建一列进行显示。
5.1

(4)AS变量重命名
主要用于分组之后进行命名。
如将上面示例中case…when筛选的结果列命名为交易有效性,订单创建时间命名为 时间,收货地址命名为地址:

select 订单创建时间 AS 时间,收货地址 AS 地址,
case
when 退款金额=0 then '成功交易'
when 退款金额>0 then '失败交易'
else '无效'
end AS 交易有效性
from 天猫订单;

5.2

三、数据清洗

1、主要工作
检查数据异常、使用代码进行数据清洗,也就是常用的增(insert)、删(delete)、改(update),其中insert较少使用,实际工作中是根据< CheckList >中的要求进行数据清洗。

2、update更新表中具体字段信息
(1)语法结构:update 表名 set 字段=‘更新内容’ where 条件;

(2)用处:当数据非常多、不清楚正确值时,就可以使用delete将异常值删除

(3)操作步骤:
3.2.1
(4)代码示例:

#数据检查
select DISTINCT 订单金额 from 天猫订单;
#查看异常数据
select * from 天猫订单 where 订单金额<10;
#使用update进行字段更新:将异常数据改为0
update 天猫订单 set 订单金额=0 where 订单金额<10;
#数据复查
select DISTINCT 订单金额 from 天猫订单;  #所有数据检查
select * from 天猫订单 where 订单金额<10;  #是否存在异常

3.2.2
3.2.3
(5)注意
执行update时可能遇到的问题:

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

报错原因:现在是在mysql的safe-updates模式中,如果where后跟的条件不是主键,就会出现这种错误。
解决方案1:在where后面加上主键的条件;
解决方案2:改模式:执行SET SQL_SAFE_UPDATES = 0; 建议改模式,简单快捷。

3、delete删除表中具体字段信息
(1)语法结构:delete from 表名 where 条件;

(2)用处:当知道正常值、删除异常值对数据整体有影响时,需要使用update进行更新,不影响正常值

(3)清洗掉id长度异常的值

#检查id长度是否异常
select DISTINCT length(user_id) from user_info;  #数据检查
select * from user_info where length(user_id)=29;  #查看异常值:异常长度29
delete from user_info where length(user_id)=29;  #数据清洗
select DISTINCT length(user_id) from user_info;  #数据复查

四、数据分组

1、GROUP BY语句
可以实现按照特定字段包含的分类进行进行 汇总计算 的效果;
如:求最小值,最大值,平均值,求和等。

2、语法结构
select 函数名(字段名) from 表名 GROUP BY 字段名;

3、求交易成功的不同<付款日期>的<订单量>和<实付金额>,即日销售额,并按<付款日期>降序排序:

#查看交易成功的订单量,即不发生退款的订单量
select count(实付金额) from t1.order where 退款金额=0;#求交易成功的不同<付款日期>的<订单量>和<实付金额>,即日销售额,并按<付款日期>降序排序
select 订单付款日期 AS 日期,count(实付金额) AS 订单量,sum(实付金额) AS 日销售额 
from t1.order
where 退款金额=0 
group by 订单付款日期
order by 订单付款日期 desc;

4、注意SQL语句的顺序:

select…
from…
where…
group by…
order by…

五、连接查询

1、join连接概念
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。连接查询是另一种类型的多表查询。连接查询对多个表进行JOIN运算,简单地说,就是先确定一个主表作为结果集,然后,把其他表的行有选择性地“连接”在主表结果集上。

JOIN语句可将两张数据表进行拼接查询,一般的连接字段都是主键,常为各种编号。

最常用三种连接:JOIN 、LEFT JOIN、RIGHT JOIN

2、语法结构

select 字段1
from 表1
JOIN 表2
ON 表1.字段3=表2.字段3

3、内连接(inner join 或 join)
内连接是等值连接,它使用“=、>、<、<>”等运算符根据每个表共有的列的值匹配两个表中的行。
5.3.1

4、左连接(left join 或 left outer join)
左连接又称左向外连接,查询的结果集包括SQL语句中左表的所有行,右表中匹配的行。如果左表的某行在右表中没有匹配行,则用空值表示
5.4.1

5、右连接(right join 或 right outer join)
右连接也成右向外连接,查询的结果集包括SQL语句中右表的所有行,左表中匹配的行。如果右表的某行在左表中没有匹配的行,则用空值表示
5.5.1

6、完全外连接(full join 或 full outer join)
完全外连接,查询的结果集包括SQL语句中左表和右表的所有行。如果某行在另一个表中没有匹配行时,则用空值表示。
5.6.1
7、补充:JOIN中的ON和where的区别
(1)on条件是在生成临时表时候使用的,先做笛卡尔乘积生成临时表1,按照on条件生成临时表2,再添加左表中 ON 子句过滤时完全未匹配到的行,最终形成查询结果;

(2)where条件是在临时表(已经on,left join之后)生成好之后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255726.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

jmteter 参数提取器-使用正则表达式来提取数据

应用场景&#xff1a; 在实际运用过程中&#xff0c;我们经常需要会遇到B请求需要使用A请求返回的数据&#xff0c;将上一个请求响应的结果作为下一个请求的参数&#xff0c;例如token&#xff0c;这个时候我们就要用到提取器来提取数据&#xff0c;Jmeter工具自带了Json提取器…

JSON 提取器

大家好啊&#xff0c;我是大田。 Json提取器专门用来提取Json结构的数据。 位置&#xff1a;取样器->添加->后置处理器->Json提取器 各字段解释&#xff1a; Name of created variables&#xff1a;保存的变量 JSON Path expression&#xff1a;JSON 表达式&#xf…

人工智能 (特征数据提取)

特征工程数据提取 &#xff1a; 机器学习(Machine Learning, ML)是一门多领域交叉学科&#xff0c;涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为&#xff0c;以获取新的知识或技能&#xff0c;重新组织已有的知…

jmeter-json提取器提取数据

背景 现在很多接口的登录是返回一个json数据&#xff0c;token值在返回的json里面&#xff0c;在jmeter里面也可以直接提取json里面的值。 上一个接口返回的token作为下个接口的入参。 1.案例场景&#xff1a; 我现在有一个登陆接口A,登陆成功后返回一个token值。有一个重置支付…

jmeter的json提取器提取数据

在接口测试中有一个这样的场景&#xff1a;登录之后&#xff0c;返回一个json数据&#xff0c;token值在返回的json里面&#xff0c;在jmeter里面也可以直接提取json里面的值&#xff0c;应用在下一个接口&#xff0c;怎么实现&#xff1f; 1、一个变量获取一个数据 登录请求…

如何从网站提取数据?

网络抓取与网络爬取 在当今时代&#xff0c;根据数据情况来制定业务决策是许多公司的头等大事。为了推动这些决策&#xff0c;公司全天候跟踪&#xff0c;监视和记录相关数据。幸运的是&#xff0c;很多网站的服务器上存储了大量公共数据&#xff0c;可以帮助企业在竞争激烈的市…

时间序列数据的特征提取

CDA数据分析师 出品 当你想对时间序列数据做分类时&#xff0c;有两种选择&#xff0c;一个是用时间序列特定的方法&#xff0c;比如说说LSTM模型。另外一种方法就是来从时间序列中提取特征从而将这些特征用在有监督的模型上。在这篇文章中&#xff0c;我们来看下如何使用tsfre…

提取数据_提取图表曲线数据的方法

采用计算机模拟预测电池性能时,一般都需要利用实验数据验证模型的准确性。如果自己无法获取实验数据,那就只能利用文献报道的数据来校正模型。本文介绍从图表曲线中提取数据的小软件及其操作步骤。 操作步骤介绍 (1)软件介绍:Engauge是一款开源软件,用于从文献曲线图或地图…

python如何提取数据_python提取数据的常用方法

在我们要对某一种情况进行分析时,需要大批量的数据材料作为分析的基础,在使用python爬取时,就会涉及到不同的抓取方法。在抓取数据的类型时,又会分为不同的情况进行讨论,本篇整理了三种提取数据方法:正则表达式、BeautifulSoup、lxml。下面就这些方法进行详解。 假设我们…

Tableau数据连接与加载(数据提取)

文章目录 一、实时连接与数据加载二、创建数据提取三、刷新数据提取四、向数据提取添加数据 一、实时连接与数据加载 1、区别 Tableau加载数据有两种基本方式&#xff0c;一种是实时连接&#xff0c;即Tableau从数据源获取查询结果&#xff0c;本身不存储源数据&#xff1b;另…

数据提取-数据提取软件

数据提取&#xff0c;数据提取主要是用来收集数据。这也是数据提取最直接和最常见的用途。由于数据提取是一个工具是一个软件&#xff0c;程序运行速度极快&#xff0c;而且不会因为做重复的事情而感到疲劳&#xff0c;所以使用数据提取来获取大量的数据就变得非常容易和快速。…

科研神器----数据提取软件WebPlotDigitizer的使用

今天介绍一款在写论文时很有帮助的数据提取软件WebPlotDigitizer&#xff0c;在我们查阅参考文献的时候&#xff0c;经常会看到文献中相关的数据图&#xff0c;而这类图通常是只有图形没有具体数据的。为了进一步进行分析处理&#xff0c;我们往往需要获取到图表原始的数据&…

大学四年,因为这8个网站,我成为同学眼中的学霸

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 大学期间&#xff0c;几乎每一个教过我的老师都反应&#xff0c;我的学习态度不好&#x…

chatgpt赋能python:Python:输出0-9的数字

Python&#xff1a;输出0-9的数字 Python是一种简单易用的编程语言&#xff0c;也是一种高级、解释性、交互式和面向对象的动态编程语言。在这篇文章中&#xff0c;我们将介绍如何使用Python编写代码来输出0-9的数字。 安装Python 在使用Python之前&#xff0c;首先要安装它…

2023 简约ChatGPT网页全开源源码

全开源的&#xff0c;很简约&#xff0c;密钥在chat.php里面输入就可以用了&#xff0c;分享给大家自己拿去玩玩&#xff0c;对接的是gpt3.5的版本。 。。。

查看网页源代码 / 查看框架源代码

网页源代码---是父级网页的代码&#xff0c;可在页面内右击或使用快捷键CtrlU 也可以在你想要查看的网页地址栏前面加上入view-source: 框架源代码---网页中有一种节点叫iframe&#xff0c;相当于网页的子页面&#xff0c;他的结构和外部网页的结构完全一致&#xff0c;框架源代…

谷歌浏览器查看网页源代码

Mac OS 苹果系统&#xff1a; optionU 快捷键 Windows系统: 方法一&#xff1a;在谷歌浏览器的任一页面上右键&#xff0c;查看源代码&#xff0c;即可看到该页面的html代码。 方法二&#xff1a;在谷歌浏览器的任一页面中按下快捷键ctrlU&#xff0c;即可看到该页面的html代…

【html代码】Windows网页版界面源码

介绍&#xff1a; Windows12 源码模拟网页win12 &#xff0c;无需安装&#xff0c;打开start.html即可&#xff0c;功能可以自行增加或者二开等等。 程序下载&#xff1a;https://qumaw.lanzoul.com/i9cMX0dlxygd

查看网页源代码的方法

方法一&#xff1a;右键查看网页源代码 方法二&#xff1a;F12开发者工具 方法三&#xff1a;view-source:url 查看网络数据包&#xff1a; 在开发者工具下选择network就可以查看网络数据包。F5刷新一下可以的到数据包。 转载于:https://www.cnblogs.com/csm21/p/10579543.html…

Python爬虫获取网页源代码出现乱码

发现用python用requests在百度中获得的代码有乱码 import requests # 0.通过如下代码&#xff0c;会发现获取的网页源代码出现乱码 url https://www.baidu.com res requests.get(url).text print(res)出现乱码 查看python获得的编码格式 import requests # 0.通过如下代码…