一张表中通常会包含很多字段,造成数据冗余,在做数据分析时,我们仅需要提取数据分析所需要的字段,这里就需要用到数据选取的知识点,同时还可以依据特定条件筛选。 本文介绍数据提取、数据筛选、条件聚合运算等内容,数据筛选后又类比EXCEL做条件计数和条件求和等操作,下面一起来学习。 数据提取 按列提取数据,使用SELECT函数,提取对应的字段名即可。 #按列提取 SELECT cname FROM course;
![](https://pic4.zhimg.com/80/v2-ad5a648c47450ea3f2b9e71c1631f16b_720w.webp)
按行提取需要特定加一个按行筛选的条件。 #按行提取 SELECT * FROM course WHERE cname='数学';
![](https://pic2.zhimg.com/80/v2-91948380d8504fc8b71462b893264839_720w.webp) 按位置提取数据,这里使用LIMIT限制数据的大小,"LIMIT 3,4"的含义表示从第3行开始筛选4行数据。 #按位置提取 SELECT * FROM student LIMIT 3,4;
![](https://pic2.zhimg.com/80/v2-69d266a6f8b5c5999406ce8625d056ed_720w.webp)
按条件提取数据,普通提取数据后,需要按照一定的条件筛选数据,这里使用WHERE函数,在后面设定条件即可完成筛选。 #按条件提取并计算 SELECT * FROM score WHERE cid=02 AND score>80;
![](https://pic3.zhimg.com/80/v2-49155a0471090a056870aca370b17afa_720w.webp)
逻辑条件筛选
常用的逻辑条件有与(AND)、或(OR)、非(NOT),这里使用AND函数,筛选条件为课程号为03,且分数大于80分。 #数据筛选AND SELECT * FROM score WHERE cid=03 AND score>80;
![](https://pic2.zhimg.com/80/v2-393a9c433c74cb6a37f61365946e2789_720w.webp)
此处使用OR函数,筛选学号为01,或者分数大于98分的数据。 #数据筛选OR SELECT * FROM score WHERE sid=01 OR score>98;
![](https://pic3.zhimg.com/80/v2-3686fe246db1cb7020804dc2793c1ffe_720w.webp)
添加一个不等于条件,筛选性别中不为"女"的数据,其中,不等于号用"!="来表示。 #数据筛选(不等于) SELECT * FROM student WHERE ssex != '女';
![](https://pic2.zhimg.com/80/v2-f118d542973a3816af38b7bcfe117025_720w.webp)
使用IN函数,可以将条件值限定为具体的值,从而达到筛选确定值的目的。 #数据筛选IN SELECT * FROM score WHERE score IN (90,99);
![](https://pic2.zhimg.com/80/v2-dcb7e7d11b5f383a63d875cb1309c2a9_720w.webp)
使用LIKE模糊筛选,%是通配符,替代一个或多个字符,这里的条件可以筛选姓李的同学。 #数据筛选like(模糊筛选) SELECT * FROM student WHERE sname LIKE '李%';
![](https://pic2.zhimg.com/80/v2-7e1fd95b359ab382c14a2157ac8291f9_720w.webp)
条件聚合运算
条件筛选后计数,类似于EXCEL中的countif函数,这里筛选课程号为03,且成绩大于60分的课程,然后计数。 #筛选后计数 SELECT COUNT(cid) AS cid_count FROM score WHERE cid=03 AND score>60;
![](https://pic2.zhimg.com/80/v2-c3fe3c28ec8b2b3faf90c1e2e2387761_720w.webp) 筛选后求和,类似于EXCEL中的sumtif函数。 #筛选后求和 SELECT SUM(score) AS sum_score FROM score WHERE sid=01 AND cid=01 AND score>60;
![](https://pic1.zhimg.com/80/v2-8321cbf06344ee6b0169ddfcfee68c10_720w.webp) 同理可以设置条件,求条件平均。 #筛选后求均值 averageif SELECT AVG(score) AS avg_score FROM score WHERE cid != 01;
文章源自:大话数据分析
|