想学数据分析但不会Python,过来看看SQL吧(上)~
SQL
SQL基礎:語法,檢索,排序,過濾,創建計算字段和使用別名;
SQL進階:鏈接表,聚合,分組,條件判斷,子查詢以及時間序列的處理;
Python
Python基礎:語法,數據類型,運算符,控制流,函數,腳本編寫及本地環境搭建;
Python數據處理:Numpy與Pandas;
Python可視化:Matplotlib,Pyecharts;
統計學
統計學基礎:描述統計學,概率,正態分布,隨機抽樣,中心極限定律等;
統計學進階:推論統計學,置信區間,假設檢驗,線性回歸,邏輯回歸等。
所有以上的這些技法都只是工具,所以要以會用且熟練為目的,把學習重點放在應用層面,多動手便能事半功倍!我們今天先從數據分析必備技能中最為簡單的SQL來開始學習吧!(這篇文章介紹的主要是SQL基礎,文章末尾也會給出在線的練習SQL的網站)
知識清單
SQL簡介
SQL是Structured Query Language的簡寫,也就是結構化查詢語言。它最受歡迎的功能便是對數據庫中的數據進行增刪改查。作為數據分析師,會經常使用SQL語言從數據庫中查詢并提取數據,而增刪改則一般由數據工程師去操作。
🙋?♂?你可能聽說過 NoSQL,它表示 Not only SQL(不僅僅是 SQL),與NoSQL的數據庫進行交互時,你編寫的代碼會與本課程中所學的SQL有所不同。最常用的 NoSQL 語言之一是 MongoDB(https://www.mongodb.com/),可以自行了解一下~
書寫規則及注釋
就像我們剛開始學寫字一樣,在學習編寫代碼之前,我們也要先了解這門語言規范的書寫規則和注釋方法。
這部分雖然比較簡單,但非常重要,有時候這不僅關系到你的飯碗,甚至還會危及到你的性命🥶,不信你可以看這篇假新聞:因代碼規范問題,美國一碼農槍殺了4個同事
(https://yq.aliyun.com/articles/644710)
SQL書寫規則
SQL語句不區分大小寫,因此SELECT與select甚至是SeLect的效果是相同的,但是要對命令和變量進行區分,所以默認命令需要大寫,其他內容如變量等則需要小寫;
表和變量名中不要出現空格,可使用下劃線_替代;
查詢語句中,使用單一空格隔開命令和變量;
為提高代碼的可移植性,請在查詢語句結尾添加一個分號;。
SQL中的注釋
代碼是給電腦看的,而注釋則是給人看的,是對你寫這行代碼的思路解釋,方便自己做debug或者給同事交接。
單行注釋-,添加注釋。
多行注釋
多行注釋以/*起始,以*/結尾。
/*SELECT?col_name? FROM?table_name;*/ SELECT?col_2? FROM?table_name;檢索數據
檢索數據主要用的語句為:SELECT和FROM,意為從(FROM)xxx表中選擇(SELECT)xxx變量,下面看示例。
檢索單列
從table_name表中檢索col_name列。
SELECT?col_name FROM?table_name;檢索多列
從table_name表中檢索col_1,col_2和col_3列。
SELECT?col_1,col_2,col_3 FROM?table_name;檢索所有列
使用通配符*,返回table_name表中的所有列;
SELECT?* FROM?table_name;檢索某列中不同的值
檢索col_1中具有唯一性的行,即唯一值。
SELECT?DISTINCT?col_1 FROM?table_name;限制檢索的結果
使用LIMIT語句可以限制返回的行數。
SELECT?col_1 FROM?table_name LIMIT?10;返回前10行(即第0-第9行)。
也可以添加OFFSET語句,設置返回數據的起始行:
SELECT?col_1 FROM?table_name LIMIT?10?OFFSET?5;從第五行之后,返回十行數據(即第5-第14行)。
排序檢索數據
排序需要使用的子句是:ORDER BY。
其可以根據指定的單列或多列對結果進行排序;
默認按照升序進行排序(從小到大,從a到z),使用DESC關鍵字可以改為降序;
在使用ORDER BY時,請確保它是SELECT語句中的最后一條子句。
下面請看示例:
按列排序
返回的數據會按照col_name列進行升序排序,這里col_name可以是單列也可以是多列,當然也可以使用非檢索的列進行排序。
降序排序
返回的數據會按照col_2列降序,col_3列升序對col_1和col_2兩列進行排序。
這里可以看出,DESC關鍵字的用法:只對跟在語句前面的變量有效。所以,想要對多列進行降序排序時,需要對每一列都指定DESC關鍵字。
過濾數據
我們使用WHERE子句來根據某個條件對篩選的數據進行過濾。
WHERE子句應該寫在表名(即FROM子句)之后,在ORDER BY子句之前;
使用的基本方式為:WHERE 列名+運算符+值;
過濾條件是區分大小寫的。
使用示例:col_1 運算符 value的值。
SELECT?col_1 FROM?table_1 WHERE?col_1?運算符?value;運算符
| = | 等于 |
| <> | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN…AND… | 在指定的兩值之間 |
| IS NULL | 為NULL值 |
| AND | 邏輯運算符:與 |
| OR | 邏輯運算符:或 |
| IN | 條件范圍篩選 |
| NOT | 邏輯運算符:非 |
?? SQL的版本不同,可能導致某些運算符不同(如不等于可以用!=表示),具體要查閱數據庫文檔。
在同時輸入AND和OR時,SQL會優先處理AND語句,所以為了建議大家在進行多條件篩選時,請用小括號將每個條件單獨擴起來,這樣既方便閱讀代碼,又不容易出問題。
用通配符進行過濾(LIKE)
通配符用來匹配值的一部分,跟在LIKE關鍵字后面進行數據過濾。
| % | 表示任何字符出現任意次數 |
| _ | 表示任何字符出現一次 |
| [] | 指定一個字符集,它必須匹配該位置的一個字符 |
| ^ | 在[]中使用,表示否定 |
示例:
SELECT?col_1 FROM?table_1 WHERE?col_1?LIKE?'_[^JM]%' ORDER?BY?col_1;如上篩選出的是,第二個字符為非J且非M的數據。
創建計算字段
其實就是在檢索數據的同時進行計算,并使用關鍵字AS將結果保存為某一列。
數值類型的計算
輸出:
prod_id??quantity??item_price??expanded_price --------------------------------------------- RGAN01??5??4.9900??24.9500 BR03??5??11.9900??59.9500這里實現的就是使用quantity*item_price創建一個名為expanded_price的計算字段,也就是一個新列。
同樣適用于計算的操作符有+(加),-(減)和/(除)。
字符類型的拼接
輸出:
col_title ------------------------ Bear?Emporium(USA) Bears?R?Us(USA) Jouets?et?ours(France)這里實現的就是將col_name列與col_country列進行了拼接,新列的名字叫做col_title。
RTRIM()函數是去掉右邊的所有空格,LTRIM()是去掉左邊的所有空格,TRIM()是去掉兩邊的所有空格。
使用別名
在上一節中我們使用AS來為變量設置別名,你可能也見過如下所示的語句:
SELECT?col1?+?col2?AS?total,?col3當然沒有 AS 的語句也可以實現使用別名:
FROM?tablename?t1以及
SELECT?col1?+?col2?total,?col3將col1+col2的結果設置名為total的列。
代碼總結
| SELECT | SELECT Col1, Col2, … | 選擇要篩選的列 |
| FROM | FROM Table | 提供列所在的表格 |
| LIMIT | LIMIT 10 | 限制返回的行數 |
| ORDER BY | ORDER BY Col | 根據列Col對查詢的結果排序(順序),可與 DESC 一起使用實現逆序。 |
| WHERE | WHERE Col > 5 | 用于過濾結果的一個條件語句 |
| LIKE | WHERE Col LIKE ‘%me%’ | 僅提取出列文本中包含 ‘me’ 的行 |
| IN | WHERE Col IN (‘Y’, ‘N’) | 僅過濾行對應的列為 ‘Y’ 或 ‘N’的數據 |
| NOT | WHERE Col NOT IN (‘Y’, “N’) | NOT表示非,與上行結果剛好互補。 |
| AND | WHERE (Col1 > 5) AND (Col2 < 3) | AND表示與,過濾兩個或多個條件均為真的數據 |
| OR | WHERE Col1 > 5 OR Col2 < 3 | OR表示或,過濾至少某一條件為真的行 |
| BETWEEN | WHERE Col BETWEEN 3 AND 5 | 與AND連用,比用運算符簡單一些 |
總結
以上是生活随笔為你收集整理的想学数据分析但不会Python,过来看看SQL吧(上)~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团算法专家:入门机器学习,比你想的要简
- 下一篇: websocket python爬虫_p