Learning Coursera SQL for Data Science

本紀錄是學習Coursera SQL for Data Science的第一篇筆記,前幾周都覺得很容易懂,到了第三周Join的時候真的是有點搞混了,因此特意把整個學習過程記錄下來

 
 留言

 

1.Subquery

題目給予查詢藝術家Led Zeppelin有幾張專輯,最簡單的做法就是先去artists表格查詢他的id為多少然後再從albums表格把artistid為22的數字都列出來,即可知道

  • select * from albums

  • select * from artists

How many albums does the artist Led Zeppelin

have?

  • 不太好

    select * from albums where artistid=22

但其實有更好的方法,使用subquery 一層一層的包起來

  • 使用Subquery

    select * from albums where artistid in

    (select artistid from artists where name=‘Led Zeppelin’)

select ,count() from albums where artistid in

(select artistid from artists where name=‘Led Zeppelin’)

2.Group by

假設資料表如下,有各個客戶的資料以及所居住的城市,那麼若要找尋各個城市下各有幾名客戶要怎麼做呢?

這時候就是group 派上用場的時候了,可以下指令依照city來把客戶統整起來

select city,count(customerid) from customers group by city

3.Order by

那若想要按照客戶在各個城市的多寡由大到小排列又要怎麼做呢?這時候order by就派上用場了,這裡還使用到了as的功能,其實就僅僅只是縮寫而已代表了前面的count(customerid),這樣後面就不用再次打長串的英文了,直接給一個英文字s取代即可,這在SQL中稱為alias

select city,count(customerid) as s from customers group by city order by s desc

4.Join

a.normal join

select * from invoices

select * from customers

現在要對於每一個顧客的收據做一個歸納且要連同客戶的個人信息、email等一同呈現,第一個部分很簡單用前面所介紹的group by即可,但後面就必須使用到join功能,這是一個可以連結兩張圖表的功能,關鍵要給予在哪個key上做連結,以目前這例子來說就是對於客戶id做連結,customers表格中有客戶id,invoices表格中也有客戶id,因此將兩者做連結即可,語法為

select XXX from A join B on A.XXX=B.XXX

因此完整答案可以寫成

select firstname,lastname,city,email,company,count(invoiceid) from invoices i join customers c

on i.customerid=c.customerid group by c.customerid

b.left join

而join的情況有可能出現兩邊表的數量不一致的情形,例如下面這個例子每張專輯有作者的id,另一張表列出作者id對應的名字,若剛好每個作者都有一張專輯那使用一般的join即可,但若有作者出現在artists表中但卻沒出現在albums表格中呢?意思就是說這個作者沒出專輯,這要如何找出來呢?

select * from albums

select * from Artists

這就要使用left join的功能,把artists表格擺在左邊,albums擺在右邊,這樣會把artists有的都列出來,即使albums中沒出現,然後再找尋albumid為null值即可

select Artists.ArtistId,title,name from artists left join albums

on Artists.ArtistId=Albums.ArtistId

where albumid is null

c.other join

  • 關於join 還有許多不同的方式,網路上已經有人用圖解詳細的解釋

關於這堂課真的學到很多東西,從一剛開始懵懵懂懂,到最後可以慢慢的以指令找出我要的資料,真的是蠻好玩的,最後也成功拿到證書了

參考資料

www.youtube.com/watch?v=bm3TW0OnhE8&ab

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments