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






