1.DESCRIBE 語句
描述」指定表或視圖中的所有列,可以幫助我們了解數據表中包含了哪些列
語法:
Describe table_name;
2.SELECT 語句
查詢滿足條件的記錄總數
語法:
# 計算數據總數
SELECT COUNT(*) FROM "表格名」;
# 計算變量(去除了缺失值)
SELECT COUNT(欄位名) FROM "表格名";
# 計算去重後的變量
SELECT COUNT(Distinct (欄位名) ) FROM "表格名";
3.MIN/MAX/SUM/AVG 函數
最小值min,最大值max,平均值avg以及求和sum
語法:
SELECT min("欄位名")
,max("欄位名")
,avg("欄位名")
,sum("欄位名")
,count("欄位名")
FROM "表格名";
1.WHERE語句
WHERE語句是SQL語句中的篩選語句。它的主要功能是對數據按照特定的條件去進行篩選,一般位置在FROM的後面。
語法:
SELECT 列名稱 FROM 表名稱 WHERE 列運算符值
2.操作符
操作符是精確匹配
除了等號之外,我們還可以使用以下符號來滿足我們不同的了解數據的需求。這類操作符的特點是:在操作符的右邊,都是只有一個固定值,不管是數字還是字符。
- 不等於:<>或者!= , NOT
- 大於:>,
- 小於:<,
- 大於等於: >=
- 小於等於: <=
3.IS
用 IS 和 IS NOT 這兩個來篩選值
4.IN / BETWEEN / LIKE
- IN/BETWEEN 是範圍匹配
- IN
- 只要滿足其中一個就屬於滿足了WHERE的條件
- 語法:
SELECT "欄位名"FROM "表格名"WHERE "欄位名" IN ('值一', '值二', ...);
- BETWEEN
- 任何在兩個取值範圍之間的記錄都被認為是滿足了WHERE條件
- 語法:
SELECT "欄位名"FROM "表格名"WHERE "欄位名" BETWEEN '值一' AND '值二';
- LIKE是模糊匹配,通常搭檔百分號符%
- 語法:
SELECT "欄位名"FROM "表格名"WHERE "欄位名" LIKE '值%';
5.AND/OR
AND操作符的邏輯是篩選出滿足所有條件的數據
OR操作符的邏輯是篩選出滿足任何一個條件的數據
6.AS
- 對變量進行命名以及重命名
- 語法:
SELECT "欄位名"AS"新欄位名"FROM "表格名"
1.INNER JOIN...ON語句(最常用)
INNER JOIN語句兩邊是需要進行連結的兩張表,ON後面的部分則是告訴SQL是根據兩張表裡的哪個欄位去進行表與表之間的連接。
語法:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
2.LEFT/RIGHT JOIN語句
LEFT JOIN:包含LEFT JOIN語句左邊表的全部記錄以及語句右邊表能匹配上的部分記錄
RIGHT JOIN:包含RIGHT JOIN語句右邊表的全部記錄以及語句左邊表能匹配上的部分記錄
3.FULL OUTER JOIN語句
inner join加上left join再加上right join三種join方式的結合
1.GROUP BY 語句
GROUP BY語句可以實現按照特定欄位包含的分類進行匯總計算的效果(比如求最小值,最大值,平均值求和等等)
2.ORDER BY 語句
在select from語句後面加上ORDER BY語句可以實現將顯示結果按照特定欄位進行排序的效果。默認為升序,最後加desc為降序 。
3.HAVING 語句
- 將HAVING語句添加在GROUP BY語句的最後,可以起到篩選出我們想要的結果的效果。
- HAVING語句中使用的篩選的變量一般是做過聚合運算處理之後計算出來的新變量。
- HAVING語句的前面一定要加一條GROUP BY的匯總語句。
4.CASE WHEN 語句
- CASE WHEN 語句主要是根據是否滿足語句中的判斷條件會落入不同的取值,對數據進行重新分類整理和命名。
- CASE WHEN語句在結尾部分必須有個END,來提示系統整個循環語句已經結束了。
窗口函數(Window Function)是 MySQL 8.0新增的一個重要的功能(注意:只有新版本才有!),可以為數據分析提供強大支持,總得來說,可以分為以下三種窗口函數:排名窗口函數、聚合窗口函數、取值窗口函數。
語法格式:
窗口函數over(
partition by 分區的欄位
order by 排序欄位 desc / asc)
要點:
① 會生成一個欄位
② 關鍵詞:
排序函數
over:用來指定函數執行窗口範圍。如果後面的括號中什麼都不寫則是指窗口範圍是:滿足where條件的所有行
partition by:窗口按照哪些欄位進行分組,窗口函數在不同的分組上分別執行,例如按照某區域分組。
order by:按照哪些欄位進行排序
③ 排序函數over是必選的
④ over括號裡面的內容是可選的
下面具體來說一下,以下幾類窗口函數:
1.排名窗口函數
排名窗口函數用於對數據進行分組排名。
常見的排名窗口函數包括:
ROW_NUMBER,為分區中的每行數據分配一個序列號,序列號從 1 開始分配。
RANK,計算每行數據在其分區中的名次;如果存在名次相同的數據,後續的排名將會產生跳躍。
DENSE_RANK,計算每行數據在其分區中的名次;即使存在名次相同的數據,後續的排名也是連續的值。
PERCENT_RANK,以百分比的形式顯示每行數據在其分區中的名次;如果存在名次相同的數據,後續的排名將會產生跳躍。
CUME_DIST,計算每行數據在其分區內的累積分布,也就是該行數據及其之前的數據的比率;取值範圍大於 0 並且小於等於 1。
NTILE,將分區內的數據分為 N 等份,為每行數據計算其所在的位置。
2.取值窗口函數
取值窗口函數用於返回指定位置上的數據。
常見的取值窗口函數包括:
FIRST_VALUE,返回窗口內第一行的數據。
LAST_VALUE,返回窗口內最後一行的數據。
NTH_VALUE,返回窗口內第 N 行的數據。
LAG,返回分區中當前行之前的第 N 行的數據。
LEAD,返回分區中當前行之後第 N 行的數據。
3.聚合窗口函數
聚合函數over partition by 分區的欄位 order by 排序欄位 desc / asc)
聚合函數,如sum. avg, count, max, min等
注意:窗口函數可以用於SELECT 列表或者ORDER BY 子句中,但是不能出現在其他子句中。
本篇為數據分析初學者在學習sql語句時常用知識點,大家可參照以上內容順序學習鞏固SQL語句。不要把它放進收藏夾吃灰喔~
END
後續我們還會分享更多實用乾貨和實戰案例
敬請持續關注~
或留言你想要了解或學習的內容
我們擇期安排
本文為愛數據學院作者南湖漁歌提供
版權歸愛數據學院所有,轉載請聯繫後臺
球分享
球在看