一張表中通常會包含很多字段,造成數據冗余,在做數據分析時,我們僅需要提取數據分析所需要的字段,這里就需要用到數據選取的知識點,同時還可以依據特定條件篩選。
本文介紹數據提取、數據篩選、條件聚合運算等內容,數據篩選后又類比Excel做條件計數和條件求和等操作,下面一起來學習。
數據提取
按列提取數據,使用SELECT函數,提取對應的字段名即可。
#按列提取
SELECT cname
FROM course;
按行提取需要特定加一個按行篩選的條件。
#按行提取
SELECT * FROM course
WHERE cname='數學';
按位置提取數據,這里使用LIMIT限制數據的大小,"LIMIT 3,4"的含義表示從第3行開始篩選4行數據。
#按位置提取
SELECT * FROM student
LIMIT 3,4;
按條件提取數據,普通提取數據后,需要按照一定的條件篩選數據,這里使用WHERE函數,在后面設定條件即可完成篩選。
#按條件提取并計算
SELECT * FROM score
WHERE cid=02 AND score>80;
邏輯條件篩選
常用的邏輯條件有與(AND)、或(OR)、非(NOT),這里使用AND函數,篩選條件為課程號為03,且分數大于80分。
#數據篩選AND
SELECT * FROM score
WHERE cid=03 AND score>80;
此處使用OR函數,篩選學號為01,或者分數大于98分的數據。
#數據篩選OR
SELECT * FROM score
WHERE sid=01 OR score>98;
添加一個不等于條件,篩選性別中不為"女"的數據,其中,不等于號用"!="來表示。
#數據篩選(不等于)
SELECT * FROM student
WHERE ssex != '女';
使用IN函數,可以將條件值限定為具體的值,從而達到篩選確定值的目的。
#數據篩選IN
SELECT * FROM score
WHERE score IN (90,99);
使用LIKE模糊篩選,%是通配符,替代一個或多個字符,這里的條件可以篩選姓李的同學。
#數據篩選like(模糊篩選)
SELECT * FROM student
WHERE sname LIKE '李%';
條件聚合運算
條件篩選后計數,類似于EXCEL中的countif函數,這里篩選課程號為03,且成績大于60分的課程,然后計數。
#篩選后計數
SELECT COUNT(cid) AS cid_count
FROM score
WHERE cid=03 AND score>60;
篩選后求和,類似于EXCEL中的sumtif函數。
#篩選后求和
SELECT SUM(score) AS sum_score
FROM score
WHERE sid=01 AND cid=01 AND score>60;
同理可以設置條件,求條件平均。
#篩選后求均值 averageif
SELECT AVG(score) AS avg_score
FROM score
WHERE cid != 01;