SELECT 日期
, 類型
, SUM(金額) --計算
FROM 收支統計
WHERE 類型 = '支出'
GROUP BY 日期, 類型 --除了計算值以外的欄位,都要放入
SQL: ORDER BY
ORDER BY:將輸出的資料進行排序,ASC 為由小到大排序,DESC 為由大到小排序
SELECT 日期
, 類型
, SUM(金額) --計算
FROM 收支統計
WHERE 類型 = '支出'
GROUP BY 日期, 類型
ORDER BY 日期 ASC --以日期順序排列,ASC 為由小到大, DESC 為由大到小
4 個基礎實用語法
SQL: IN
IN:通常會跟 WHERE 一起出現
當條件有 2 個以上,例如:WHERE 類型細項 IN (‘薪資’, ‘稿費’)
當條件要從其他資料庫裡取出時會用到,例如:WHERE 類型細項 IN (SELECT * from 資料表)
SELECT 日期
, 類型細項
, SUM(金額) --計算
FROM 收支統計
WHERE 類型細項 IN ('薪資', '稿費') --當條件有 2 個以上
GROUP BY 日期, 類型
ORDER BY 日期 ASC --以日期順序排列,ASC 為由小到大, DESC 為由大到小
SQL: WITH
在學 WITH 之前,要知道什麼是子查詢,子查詢就是一段 SQL 指令會出現兩個以上的 SELECT,在一段 SQL 查詢當中的 FROM 來源或是 WHERE 條件是來自另外一段 SQL 查詢
SELECT 日期
, 類型
, SUM(金額) --計算
FROM 收支統計
WHERE 類型 = '支出'
AND 交易銀行 IN (SELECT 交易銀行 FROM 銀行帳號管理)
GROUP BY 日期, 類型
ORDER BY 日期 ASC --以日期順序排列,ASC 為由小到大, DESC 為由大到小
WITH:可以用來取代查詢中的查詢,也稱為子查詢 (Subquery),子查詢跟 WITH 都很好用
這個是 WITH 的用法:
WITH 銀行資訊 AS (
SELECT 交易銀行
FROM 銀行帳號管理
)
SELECT 日期
, 類型
, SUM(金額) --計算
FROM 收支統計
WHERE 類型 = '支出'
AND 交易銀行 IN (SELECT * FROM 銀行資訊)
GROUP BY 日期, 類型
ORDER BY 日期 ASC --以日期順序排列,ASC 為由小到大, DESC 為由大到小
這兩個範例的結果是一樣的,需要用到子查詢或是 WHERE 的原因是,我的 WHERE 條件需要從另外一張資料表裡面取得
SQL: LIKE、REGEXP_LIKE
LIKE:通常也是跟著 WHERE 一起出現,用來比較字串是否包含你要的結果,例如:
SELECT 日期
, 類型
, SUM(金額) --計算
FROM 收支統計
WHERE 類型 = '支出'
AND 交易銀行 LIKE '%中信%'
GROUP BY 日期, 類型
ORDER BY 日期 ASC --以日期順序排列,ASC 為由小到大, DESC 為由大到小
REGEXP_LIKE 跟 LIKE 很類似,兩種用法都可以:
SELECT 日期
, 類型
, SUM(金額) --計算
FROM 收支統計
WHERE 類型 = '支出'
AND REGEXP_LIKE (交易銀行, '支出')
GROUP BY 日期, 類型
ORDER BY 日期 ASC --以日期順序排列,ASC 為由小到大, DESC 為由大到小
Pingback: [數據分析#0] 數據分析文章導覽 - Lisa Wu 財富自由之路