数据分析基本概念
什么是数据分析?
简单来说,数据分析就是利用数据来理性思考和决策的过程
数据分析分类
数据分析(Data Analysis): 是以数据为分析对象,以探索数据内的有用信息为主要途径,以解决业务需求为最终目标。
数据挖掘(Data Mining): 是一个跨学科的计算机科学分支,它是用人工智能、机器学习、统计学和数据库的交叉方法在相对较大型的数据 集中发现模式的计算过程。
数字化工作
业务运行探索: 探索关注企业各项业务的运行状态、各项指标是否合规以及各项业务的具体数据情况等等。
问题根原因诊断: 当业务指标偏离正常值时,采用定性和定量相结合的方式,在中、微观层面定位和分析问题。
业务策略指导: 在确定获客群体后,我们就需要考虑下如何制定业务策略指导。根据知识库、策略库、流程模版可以便捷地制定优化策略。
智能算法工具: 算法架构是EDIT数字化模型的发动机,服务于价值经营、客群运营、全面质量管理、全面风险管理等各个方面。
职业道德操守
将数据产权、用户利益和机构利益置于个人利益之上,保护数据资产的安全性,遵循数据的真实性、可靠性,禁止技术欺诈、数据造假、非法交易,损害用户和机构利益。保持和加强自身职业道德操守以及同行的操守。不参与任何违法行为,包括但不限于:偷窃、欺骗、腐败、挪用或贿赂;不使用或滥用他人的产权,包括数据资产、知识产权;不参与诽谤和侮辱;不宽恕或帮助他人参与违法行为。
行为准则
专业、审慎、高效地完成各项数据分析的业务流程:
- 全面了解业务背景、痛点、需求,做出分析建议,与团队充分沟通,确定合理的业务指标,获取符合要求的源数据。
- 保持工具与算法的前沿性、适用性、高效性。根据业务需要,选择合理的工具、平台、系统及算法。
- 不断迭代并优化业务指标与数据模型。
- 撰写专业可视化报告,逻辑清晰展示项目成果,并做出具有商业价值的建议 尊重契约,按时按质完整交付工作成果,并对相关数据、代码、结果进行保密。履行后期义务与责任。完整交付结果后,对客户须进行后期解答、咨询、维护等服务;对机构业务须进行后期跟进、优化、指导建议等工作。
大数据立法,安全,隐私
原则
有关数据隐私与安全的立法,是一个单独的、严谨的领域。而且内容庞杂。千万不要去背诵相关法条,而是要掌握数据安全法的立场与原则, 然后去分析相关实际问题。
- 隐私是一种个人的权利,即我的个人信息不被滥用,不被他人知道的权力。
- 安全是一种机制,即为了确保隐私权得到保护而设立的一种机制。
- 首先明确个人权利,然后设置机制去保护权利。
外国相关法律
欧盟的《通用数据保护条例》General Data Protection Regulation,简称GDPR。其核心目标是将个人数据保护深度嵌入组织运营,真正将抽象的保护理论转化为实实在在的行为实践
GDPR
企业在收集用户的个人信息之前,必须向用户说明:将收集用户的哪些信息、收集到的信息将如何进行存储、存储的信息会如何使用、企业的联系方式。 用户享有的权利有:
- 数据访问权
- 被遗忘权
- 限制处理权
- 数据携带权
我国相关法律
保护公民个人数据信息安全已写入刑法《中华人民共和国刑法修正案(九)》
《中华人民共和国网络安全法》
- 网络运营者收集、使用个人信息必须符合合法、正当、必要原则;
- 网络运营商收集、使用公民个人信息的目的明确原则和知情同意原则;
- 公民个人信息的删除权和更正权制度。
2020年6月28日-30日,《中华人民共和国数据安全法》 迎来初次审议。
- 确立数据分级分类管理以及风险评估,检测预警和应急处置等数据安全管理各项基本制度;
- 明确开展数据活动的组织、个人的数据安全保护义务,落实数据安全保护责任;
- 坚持安全与发展并重,锁定支持促进数据安全与发展的措施;
- 建立保障政务数据安全和推动政务数据开放的制度措施。
数据结构
表格结构数据特征
数据类别: 结构化数据,非结构化数据
数据类型: 数值型,文本型,逻辑型
单元格格式属性: 数字格式决定显示形式,显示格式决定显示效果
表格结构数据获取方法
一.企业后台数据库系统获取
注意点: 1.需求中的业务描述部分应尽量准确、详细、易懂。 2.需求中的数据使用部分的描述应尽量做到条理清晰、逻辑严谨、细节描述要详细。 3.需求描述结束后需要确认数据库管理人员听懂并且理解了需求内容。 4.向数据库管理人员询问获取数据的方案,与数据库管理人员一起逐一核对方案细节。
流程:
二.前端操作平台获取数据
优点:高效、方便
缺点:只能导出提前设定好的数据内容,如果要使用设定逻辑之外的数据还是需要从数据库中获取
※使用SQL语句对数据库进行查询时 需要提前拥有数据库的查询权限,此 权限一般由企业数据库管理员开通
三.企业外部渠道获取数据
表格结构数据使用方法
一.单元格值的引用方法
二.单元格区域值的引用方法
三.表格函数使用
四.表格结构数据查询方法
五.表格结构数据的计算方法
直接计算: 使用运算符连接单元格或单元格区域进行计算
函数计算: 使用函数对单元格及单元格区域值进行计算并返回计算结果
表结构数据特征
表结构数据: 以字段或记录作为数据的引用,操作和计算的基本单位的数据(例如列表示字段,行表示记录)
事实表和维度表 维度表只包含维度信息,事实表既包含维度信息又包含度量信息,如图:
数据特征 一.第一行为标题, 第二行以后称为记录, 字段名不能重名, 一个字段只能有一种数据类型
二.所有字段记录行数相同(方形机构,存在空值,记录行数相同,处理缺失值)
三.一个表中有且只有一个主键
四.确认主键的方法
1.如果直接对数据库中的数据表进行操作,可以通过SQL语句确认数据表的主键字段 2.如果间接在其他数据分析平台使用表结构数据(数据源是数据库中的数据表,使用时将数据源数据导入到其他平台使用),可以找原数据库中数据表的设计者咨询主键信息,或是直接查看数据表设计者留下的设计资料来对主键字段进行确认 3.通过对数据表的业务意义进行分析,推测主键字段后在用物理手段确认推测的主键字段中的记录值是否能够满足“非空”、“不重复”的要求来对主键字段进行确认
处理缺失值
一. 根据数据类型以及生成信息重要程度的不同,使用不同的方法处理缺失值 文本型字段: 影响不大,不进行处理或者替换,影响大,替换或者删除 数值型字段: 综合考虑该数值型字段所代表的度量意义以及针对该数值型字段进行汇总计算的方式来最终决定对缺失值的具体处理方法
表结构数据的获取方法
关系型数据库管理系统: 关系型数据库管理系统的主要任务是企业业务数据的存储,检索,访问和共享
商业智能系统-BI: 用于为企业决策者快速提供完整,准确,深入的数据分析结果,帮助企业决策者实现商业洞察
ETL功能: 将数据从数据源端经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库
数据仓库-DW: 用来存储分析所需要的不同数据源上的所有相关数据信息
OLAP: 连接数据孤岛,创建多维数据模型
表结构数据的使用方法
表结构数据的横向合并: 将不同表中的字段信息合并到同一个表中使用
一.通过公共字段匹配(拥有相同记录值的字段)
二.左表与右表(连接命令左侧的表为左表,右侧的表为右表)
三.连接方向(决定表的主附关系,主要有"左连接","右连接","内连接")
四.对应关系(决定连接结果行数是对应项乘积的结果)
五.E-R图(多表连接的鸟瞰图)
表结构数据的纵向合并: 多表中记录信息合并到同一个表中进行使用
一.字段个数相同
二.相同字段位置的数据类型相同
三.去重合并与全合并
表结构数据的汇总: 数据透视--对零散数据进行汇总分析.维度筛选度量,度量被维度筛选
一.维度(业务观测角度)
二.度量(业务行为结果)
三.汇总计算规则(衡量业务行为结果好坏程度的测量仪)
数据分析的业务意义: 数据分析是连接零散数据与人类认知间的桥梁
一.数据透视分析
二.数据挖掘分析
数据库
数据库概述
关系型数据库管理系统(RDBMS)与结构化查询语言(SQL):
一.数据库是存储、调用、分析数据的仓库,主要分为关系型数据库与非关系型数据库两类
二.关系数据库是数据库应用的主流
三.关系型数据库以行和列的形式存储数据,这一系列的行和列被称为表,一组表组成了数据库。
四.当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、MySQL等。
五.操作关系型数据库时使用的语言叫结构化查询语言,简称SQL结构化查询语言。
MySQL: MySQL是最流行的关系型数据库管理系统之一
一.数据库:数据库是表的集合,带有相关的数据
二.表:一个表是多个字段的集合
三.字段:一个字段是一列数据,由字段名和记录组成
四.在商业数据分析中使用的绝大部分数据都来自于企业数据库
五.数据库负责数据收集、数据整合、数据调用等工作
六.几乎所有数据分析类工具都支持调用数据库中数据
数据定义语言DDL
数据定义语言是用来对数据库管理系统中的对象进行“增删改查”操作的SQL语句,一般应用DDL语言对数据库不同对象进行定义操作时,需要提前具备相应数据库管理权限。
定义数据库: 操作关系型数据库
一.创建数据库:create database 数据库名称 (创建名为test的测试数据库 create database test;)
二.查看创建好的数据库:show create database 数据库名称; (查看创建好的test数据库 show create database test;)
三.查看所有数据库列表:show databases;
四.使用数据库:use 数据库名称; (使用创建好的test数据库 use test;)
五.删除数据库:drop database 数据库名称; (删除创建好的test数据库 drop database test;)
数据表:
一.数据库是由多个数据表构成的
二.每张数据表存储多个字段
三.每个字段由不同的字段名及记录构成,每个字段有自己的数据结构及约束条件
创建,查看,删除数据表: 创建数据表:create table 表名(…); 用SQL语句创建以下员工信息表
一.使用test数据库:use test;
二.创建员工信息表: create table emp( depid char(3), depname varchar(20), peoplecount int);
三.查看表是否创建成功:show tables;
四.册删除数据表:drop table emp;
"位"与"字节":
一.位:"位(bt)"是电子计算机中最小的数据单位。每一位的状态只能是0或1。
二.字节:8个二进制位构成1个"字节(Byt)",它是存储空间的基本计量单位。
三.数据类型:不同的数据类型具有不同的字节长度。字节长度越长能取值的数值区间也就越大。一个INT整数型数据占用四个字节长度,有符号大小-21474836482147483647,无符号大小04294967295
数据表中的数据类型:
一.数值类型:(在指定字段数据类型时如果在数据类型后加上UNSIGNED属性可以禁止负数)
INT:有符号的和无符号的。有符号大小-21474836482147483647,无符号大小04294967295。最大显示宽度为11-int(11)
TINYINT:有符号的和无符号的。有符号大小-128127,无符号大小为0255。最大显示宽度为4-tinyint(4)
SMALLINT:有符号的和无符号的。有符号大小-3276832767,无符号大小为065535。最大显示宽度为6-smallint(6)
MEDIUMINT:有符号的和无符号的。有符号大小-83886088388607,无符号大小为016777215。最大显示宽度为9-mediumint(9)
B1GlNT:有符号的和无符号的。最大显示宽度为20-bigint(20)
FLOAT(M,D):只能为有符号的。4字节,默认为(10,2)
D0UBLE(M,D):只能为有符号的。8字节,默认为(16,4)
DECIMAL(M,D):只能为有符号的。
二.日期时间型
DATE:YY-MM-DD格式,在1000-01-01和9999-12-31之间。例如:1973-12-30
DATETIME:YY-MM-DD HH:MM:SS格式,位于1000-01-01 00:00:00和9999-12-31 23:59:59之间。例如:1973-12-3015:30:00
TIME:以HH:MM:SS格式,-838:59:59 ~ 838:59:59
TIMESTAMP:称为时间戳,在1970-01-01 00:00:00和2037-12-31 23:59:59之间。例如,1973年12月30日下午15:30,则在数据库中存储为:19731230153000
YEAR(24):以2位或4位格式存储年份值。如果是2位,19702069;如果是4位,19012155。默认长度为4
三.字符串类型
CHAR(M):固定长度字符串,长度为1-255。如果内容小于指定长度,右边填充空格。如果不指定长度,默认为1
VARCHAR(M):可变长度字符串,长度为1-255。定义该类型时必须指定长度
BLOB或TEXT:最大长度65535。存储二进制大数据,如图片。不能指定长度。两者区别:BLOB大小写敏感
TINYBLOB和TINYTEXT:最大长度255。不能指定长度。
MEDIUMBLOB或MEDIUMTEXT:最大长度16777215字符
LONGBLOB或LONGTEXT:最大长度4294967295字符
ENUM:枚举。例如:ENUM(‘A',’B',’C')。NULL值也可
约束条件: 约束是在表上强制执行的数据检验规则,用来保证创建的表的数据完整和正确,MySQL数据库常用约束条件如下
一.主键约束:保证表中每行记录都不重复
主键,又称为”主码”,是数据表中一列或多列的组合。主键约束要求主键列的数据必须是唯一的,并且不允许为空。使用主键,能够唯一地标识表中的一条记录,还可以加快数据库查询的速度.主键分为两种类型:
单字段主键: create table emp( depid char(3) primary key, depname varchar(20), );
多字段联合主键: create table emp( depid char(3), depname varchar(20), peoplecount int, primary key(depname,depid));
二.非空约束:指的是字段的值不能为空
语法:字段名 字段类型 not null, 例如: create table emp( depid char(3) primary key, depname varchar(20) not null, peoplecount int );
三.唯一性约束:要求该列的值必须是唯一的
允许为空,但只能出现一个空值; 一个表中可以有多个字段声明为唯一的; 唯一约束确保数据表的一列或几列不出现重复值;
语法:字段名 数据类型 unique. 例如: create table emp( depid char(3) primary key, depname varchar(20) not null, peoplecount int unique );
四.默认约束:指定某个字段的默认值
当插入记录时如果没有明确为字段赋值时,那么系统就会自动为这个字段赋值为默认约束设定的值
语法:字段名 数据类型 default 默认值. 例如: create table emp( depid char(3) primary key, depname varchar(20) default '-', peoplecount int unique)
五.自增字段:一个表只能有一个自增字段,自增字段必须为主键的一部分.默认情况下从1开始自增
例如:创建含各种约束条件的数据表
CREATE TABLE example(
id INT PRIMARY KEY AUTO_INCREMENT,-创建整数型自增主键
name VARCHAR(4) NOT NULL,-创建非空字符串字段
math INT DEFAULT 0,-创建默认值为0的整数型字段
minmax FLOAT UNIQUE -创建唯一约束小数型字段 );
修改数据表: 修改表指的是修改数据库中已经存在的数据表的结构.MySQL使用alter table语句修改数据表结构,包括:修改表名,修改字段数据类型或字段名,增加和删除字段,修改字段的排列位置等
一.将数据表emp改名为empdep. (alter table emp rename empdep;)
二.将数据表empdep中depname字段的数据类型由varchar(20)修改成varchar(3O). (alter table empdep modify depname varchar(30);)
三.将数据表empdep中depname字段的字段名改为dep. (alter table empdep change depname dep varchar(30);)
四.将数据表empdept中dep字段的字段名改回为depname,并将该字段数据类型改回为varchar(20). (alter table empdep change dep depname varchar(20);)
五.为数据表empdep添加新字段maname,新字段数据类型为varchar(10),约束条件为非空. (alter table empdep add maname varchar(10) not null;)
六.将数据表empdep中maname字段的排列顺序改为第一位. (alter table empdep modify maname varchar(10) first;)
七.将数据表empdep中maname字段的排列顺序改到depid字段之后. (alter table empdep modify maname varchar(10) after depid;)
八.删除maname字段. (alter table empdep drop maname;)
数据操作语言DML
数据操作语言(DML)是对表中记录进行添加(INSERT)、更新(UPDATE) 、删除(DELETE)等操作的语言,与DDL语言相同,在使用DML语言对记录信息进行操作时,也需要提前拥有相应的操作权限
数据填充:
一.使用insert into语句为表插入数据
语法:insert into 表名(字段l,字段2,...) values (......);
例如: insert into fruits(f_id,s_id,f_name,f_price) values('a1,101,apple,5.2),('b1,101,blackberry,10.2), ('bs1,102,'orange,11.2);
二.导入外部数据
导入外部文本文件:(为Monthly_.Indicator表导入外部txt文件)
load data local infile '文件路径.txt' into table Monthly Indicator fields terminated by '\t' ignore 1 lines;
三.检查表数据:对导入表中的数据一般从导入内容、导入数据总行数以及表结构三方面进行检查
检查导入内容Monthly_Indicator (Select from Monthly_Indicator;)
检查导入数据总行数Monthly_Indicator (Select count(*)from Monthly_Indicator;)
检查表结构 (Desc Monthly_Indicator;)
数据修改: update…set:为字段赋值,语法为update表名set字段名=值;
例:使用concat函数在f_name字段值前添加'fruit_’信息 (update fruits set f_name concat('fruit,f_name);)
数据删除: delete:删除数据表中的数据,语法为DELETE FROM表名WHERE Clause],如果省略wherel的话则删除表中所有数据记录
例:删除f_id为'b5'的数据记录 (delete from fruits where f_id ='b5';)
数据库查询
Select语句操作符:
一.算术操作符(+,-,*,/)
二.比较操作符(>,<,=,>=,<=,!=,<>,!>,!<)
聚合类函数:
SQL查询:
SELECT语句的语法: SELECT〈目标列组〉FROM〈数据源〉[WHERE〈元组选择条件〉] [GROUP BY〈分列组〉[HAVING〈组选择条件〉]] [ORDER BY〈排序列1〉〈排序要求1〉[,…n]];
例如: 对大气质量表进行有选择的查询
select city_name,avg(pm25),avg(pm10) from Monthly_Indicator
where pm25>50 group by city_name, month_key having city_name <> '北京' order by avg(pm25) desc;
一.单表查询
查询大气质量表中的全部内容 (select * from monthly_indicator;)
查询北京的大气质量数据 (select * from monthly_indicator where city_name='北京';)
查询不同月份PM2.5的最大值 (select month_key,max(pm25) from monthly_indicator group by month_key;)
降序查询不同城市PM10的平均值 (select city_name, avg(pm10) from monthly_indicator group by city_name order by avg(pm10) desc;)
二.多表查询: 多表查询指的是将两个以上的数据表通过关键字段连接在一起,并从不同表中取不同字段进行查询的方法
关键字段:用来连接两表的内容信息能够匹配的上的字段
1.相连的两表中都需要有关键字段
2.关键字段中的记录信息能够匹配的上
3.最理想的连接状态是两表中的两个关键字段都是主键,而且两个主键的值能够一一匹配的上
语法:“SELECT<select_list>FROM<表1>xx join<表2>on表1.key=表2.key”语句连接两表
l.xx代表链接的方向,可以是inner、.left、rights等关键字
2.在连接语句前边的表是“左表”,在连接语句后边的表是“右表”
三.内连接查询(inner join): 按照连接条件合并两个表,返回满足条件的行。
SELECT <select_list> FROM A INNER JOIN B ON A.Key = B.Key;
四.左连接查询(left join): 结果中除了包括满足连接条件的行外,还包括左表的所有行。
SELECT <select_list> FROM A LEFT JOIN B ON A.Key B.Key;
五.右连接查询(right join): 结果中除了包括满足连接条件的行外,还包括右表的所有行。
SELECT <select_list>FROM A RIGHT JOIN B ON A.Key B.Key;
六.联合查询:
union:用于合并两个或多个SELECT语句的结果集,并消去表中任何重复行。
例:用union合并t1与t2表 (select t1. * from t1 union select t2. * from t2;)
union all:用于合并两个或多个SELECT语句的结果集,保留重复行。
例:用union allt合并t1与t2表 (select t1. *from t1 union all select t2. *from t2;)
七.全连接查询: 全连接会返回两张表中全部的记录,本质上是对两个表中的记录取并集。 全连接没有主附表的区别,按照连接条件可以匹配到的记录会返回匹配后的结果, 匹配不到的记录用null进行填充。 (select from t1 left join t2 on key1=key2 union select from t1 right join t2 on keyl=key2;)
查询操作符与子查询
创建fruits数据表: create table fruits( f_id char(10)not null, s_id int not null, f_name varchar(255)not null, f_price decimal(8,2)not null, primary key(f_id) );
字段说明: f_id:水果ID, s_id:品类ID, f_name:水果名称, f_price:水果价格
操作符:
一.AND:用来联合多个条件进行查询,条件与条件间是“和”的意思,条件表达式1AND条件表达式2【…AND条件表达式n】
例:用and操作符查询s_id为101并且f_id为a1的水果记录 (select from fruits where s_id = 101 and f_id = 'a1';)
二.OR:用来联合多个条件进行查询,条件与条件间是“或”的意思 条件表达式1 OR条件表达式2【OR条件表达式n】
例:用or操作符查询苹果或者橙子的相关记录 (select from fruits where f_name = 'apple' or f_name = 'orange')
三.IN:判断某个字段的值是否在指定的集合中,如果在集合中则满足查询条件,如果不在则不满足查询条件.【NOT】IN(元素1,元素2,…,元素n).※其中NOT是可选参数,加上NOT表示不在集合内满足条件
例:用in操作符查询苹果和橙子的相关记录 (select from fruits where f_name in('apple',orange'))
例:用not in操作符查询苹果和橙子之外的水果的相关记录 (select from fruits where f_name not in('apple','orange'))
四.BETWEEN:判断某个字段的值是否在指定的范围内,如果在则满足查询条件,如果不在则不满足查询条件.【NOT】BETWEEN 取值1 AND取值2.※其中NOT是可选参数,加上NOT表示不在指定范围内满足条件
例:用between..and操作符查询f_price在l0元到20元之间的水果记录 (select from fruits where f price between 10 and 20;)
五.LIKE:用来匹配字符串是否相等,如果字段的值与指定的字符串相匹配,则满足查询条件,如果与指定的字符串不匹配,则不满足查询条件.【NOT】LIKE字符串.※其中NOT是可选参数,加上NOT表示指定的字符串不匹配时满足条件,字符串参数的值可以是一个完整的字符串,也可是包含%或者_的通配符。其中%代表任意长度的字符串。例如b%k表示以字母b开头,以字母k结 尾的任意长度的字符串。比如bak,book,break等都可以。而_只能表示单个字符。例如b_k表示以字母b开头,以字母k结尾的3个字符。只有上例中的bak是匹配项,而book与break:均不满足匹配要求。
例:用like操作符查询所有f_id由b开始且字符长度为两位的水果记录 (select from fruits where f_id like'b_;)
六.IS NULL:用来判断字段的值是否为空值(NULL)。如果字段的值为空值,则满足查询条件,如果字段的值是非空值,则不满足查询条件.IS【NOT】NULL.※其中NOT是可选参数,加上NOT表示字段不是空值时满足条件。
例:用is null操作符查询所有f_name为空的水果记录 (select from fruits where f name is null;)
七.DISTINCT:用来消除重复记录。 (语法:SELECT DISTINCT 字段名)
例:查询fruits表中所有不重复的s_id (select distinct s_id from fruits;)
操作符与子查询组合应用:
子查询:写在()中,把内层查询结果当做外层查询参照的数据表来用
一.ANY:表示满足其中任意一个条件,使用Any关键字时,只要满足内层查询语句返回的结果中的任何一个,就 可以通过该条件来执行外层查询语句
例:用any操作符与子查询语句来查询所有f_id对应的f_price在10元到20元之间的水果记录 (select * from fruits where f_id = any (select f_id from fruits where f_price between 10 and 20);)
二.ALL:表示满足所有条件,使用All时,只有满足内层查询语句返回的所有结果,才可以执行外层查询语句
例:用all操作符与子查询语句来查询所有f_price大于20元的水果记录 (select from fruits where f_price > all (select f_price from fruits where f_price <= 20);)
三.EXISTS:表示存在,使用Exists关键字时,内层查询语句不返回查询的记录,而是返回一个真假值,如果内层 查询语句查询到满足条件的记录,就返回真值,否则返回假值,当返回真值是,外层查询语句将进行查询,当 返回假值时,外层查询语句不进行查询或者查询不出任何记录
例:用exists操作符与子查询语句来查询是否存在f_price大于30元的水果记录 (select from fruits where exists (select from fruits where f_price > 30);)
as重命名与limit限制查询结果行数:
一.as:可以将表或字段名重新命名为别的名称使用,只在查询中有效
例:用as将fruits表名重命名为f后使用 (select f.* from fruits as f;)
二.limit:查询后只显示limit指定数字的行数结果
例:显示f_prices金额最大的前三名水果记录 (select from fruits order by f_price desc limit 3;)
函数
常用数字函数: 主要用于处理数字值
常用字符串函数: 主要用于处理字符串值
常用日期及时间函数: 用于处理日期时间型数据
其它函数: 一.GROUP_CONCAT()函数:常与关键字GROUP BY一起使用,能够将分组后指定的字 段值都显示出来。
例:使用group_concat函数查询不同s_id下对应的所有t_name信息 (SELECT s_id,GROUP_CONCAT(f_name) FROM fruits GROUP BY s_id;)
二.CAST()函数: 将一个值转换为指定的数据类型
例:将文本字符串12转换为整型12 (SELECT CAST('12' AS int))
逻辑函数用来对表达式进行判断,根据满足的条件不同,执行相应的流程
三.空值函数ifnull(expression,alt_value)
例:查询每位员工的实发工资(基本工资+奖金) (select ename,sal+ifnull(comm,0) 实发工资 from emp;)
四.判断函数if(expr1,expr2,expr3)
五.逻辑表达式: case when exprl then expr2 [when expr3 then expr4...else expr]end;
例:查询员工的工资级别,3000及以上为高,1500及以下为低,其余为中
使用if函数(select ename,sal,if(sa>=3000,'高',if(sak=1500,'低','中))工资级别 from emp:)
使用case(select ename,sal,case when sal>=3000 then '高' when sal<=l500then'低'else'中' end 工资级别 from emp:)
开窗函数:对数据的每一行,都使用与该行相关的行进行计算并返回计算结果,有几条记录执行完返回结果还是几条
六.over()函数
语法: 开窗函数名([<字段名>]) over([partition by<分组字段>][order by排序字段[desc][<滑动窗口>])
例: 查看每个部门总工资 (select *,SUM(工资) over(partition by 部门) from 表;)
例: 查看每个部门累计总工资 (select *,SUM(工资) over(partition by 部门 order by 员工ID) from 表;)
例: 查看累计工资 (select *,SUM(工资) over(order by 员工ID) from 表;)
MYSQL8.0版本支持的11种开窗函数:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。