iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
AI & Data

跟著文組生學數據分析系列 第 17

抓取資料庫數據 - SQL基礎語法(中)

  • 分享至 

  • xImage
  •  

上次我們已經學會要怎麼從資料庫依照各個表取出我們想要的欄位,也可以透過條件篩選的方式過濾我們想要的資料。接下來,讓我們更進一步來透過SQL語法整理我們想要的資料樣貌。

如果我們想要將資料透過分組的形式呈現該怎麼辦呢?

SELECT AVG(欄位名),COUNT(欄位名),SUM(欄位名),欄位名
FROM 表名
GROUP BY 欄位名;

沒錯!要使用到GROUP BY ,這個有點像是Excel裡的樞紐分析表,可以透過選擇自己想要的欄位,將數值做各種運算(加總、平均、計數等)來呈現。

而當我們使用了GROUP BY後,又想要根據該表篩選對應的條件該怎麼辦呢?此時或許你會說可以使用上次我們已經學過的WHERE。可惜!差一點點,在使用GROUP BY後並不能使用WHERE,針對分組過後的篩選這時我們要用到另外一個指令HAVING

SELECT AVG(欄位名1),COUNT(欄位名2),SUM(欄位名3),欄位名4
FROM 表名
GROUP BY 欄位名4
HAVING 條件;

HAVINGWHERE還有一個差別就是,聚合函數(類似於AVG、SUM等)並不能放在WHERE的條件哩,但卻可以在HAVING的條件裡使用!

呼~~已經篩好想要的資料表,那針對這些資料如果想要做排序該怎麼辦?

SELECT AVG(欄位名1),COUNT(欄位名2),SUM(欄位名3),欄位名4
FROM 表名
GROUP BY 欄位名4
HAVING 條件
ORDER BY 欄位名4;

ORDER BY的預設中是採升序排列(由小到大)語法為ASC,如果想要降序排列(由大到小)的話,則要再加上DESC

SELECT AVG(欄位名1),COUNT(欄位名2),SUM(欄位名3),欄位名4
FROM 表名
GROUP BY 欄位名4
HAVING 條件
ORDER BY 欄位名4 DESC;

上述是本篇的內容,有很多函數和語法這裡沒有提及,因此這邊推薦給大家一個超棒的學習資源-SQLbolt!

學習SQL常常遇到的第一步是要去哪裡找資料庫,要怎麼安裝My SQL等等問題,但是透過這個線上教學平台,以上問題迎刃而解!透過章節安排,一步一步練習基礎需要學習的語法,非常推薦新手的各位在上面學習,快的話一天就可以全部練習完囉!

推薦學習資源:

https://sqlbolt.com/

萬用百科:

https://www.1keydata.com/tw/sql/sql.html

https://www.w3school.com.cn/sql/index.asp


上一篇
抓取資料庫數據 - SQL基礎語法(上)
下一篇
抓取資料庫數據 - SQL基礎語法(下)
系列文
跟著文組生學數據分析30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言