在 Where 中使用子查詢 select 中還有另一個 select,這樣的寫法稱為「子查詢」。 子查詢當中,內側的 select 會先被執行,然後其結果將會傳給母查詢進行處理。 --取得販賣單價最高之商品的商品名稱 select [商品名稱] from [商品清單] where [販賣單價]=(select max([販賣單價]) from [商品清單]) 在這範例中,先從商品...
[SQL] 日期的加工 Datepart()
使用Datepart()來取出「年」 、「月」的資料,並進行群組化 group by。 取出「年」:DATEPART(YYYY,[處理日]) 年份 取出「月」:DATEPART(MM,[處理日]) 月份 每張傳票都有明細資料,因為要計算傳票數時,必須要在傳票編號上加上distinct (distinct [傳票編號]) ...
[SQL] 最大值 Max(), 最小值 Min(), 平均值 Avg()
最大值 Max(), 最小值 Min(), 平均值Avg() 會把 NULL值排除在統計對象中。 最大值 Max(), 最小值 Min()對「日期」也有效,因為可以用來求得「最新的處理日」。 取得單價的最大值 Max(), 最小值 Min(), 平均值 Avg() --取得販賣單價的最大值 Max(), 最小值 Min(), 平均值 Avg() select max([販賣單...
[SQL] 去除重複列 Distinct
Distinct將重複的資料列變為一列。 --取得4月份有賣出商品的商品ID列表 --但ID不能重複 select distinct 商品ID from [販賣資料] where [處理日] between '2006-04-01' and '2006-04-30'
[SQL] Having:取代Where搭配聚合函數
Having (取代Where搭配聚合函數) Having 子句是用來取代 Where 搭配聚合函數 (aggregate function) 進行條件查詢,因為 Where 不能與聚合函數一起使用。 「聚合函數」指的也就是 AVG()、COUNT()、MAX()、MIN()、SUM() 等這些內建函數。 練習1: Join + Group By + Havving + Sum...
[SQL] 群組化 Group By、計數Count()、求和Sum()
Count() & Sum() Count()計算個數: 對符合條件的結果(記錄)計算資料行的個數 Sum() 數值求和:對符合條件的資料行內的數值求和 比如:fruit表 id name price 1 apple 2 2 banana 4 count(price):結果為: 2 (表示有2筆記錄) sum(price):結果為: 6 (p...
[SQL] 取得件數 Count()
效率: Count(1) > Count(欄位名) > Count(*) count(1) 是絕對快,它只統計記錄條數,對條件下的表掃描一遍而已(包含NULL) count(*) 是可能快,有主鍵的時候只掃主鍵,主鍵數等於記錄數(包含NULL) count(欄位別) 回傳列數(不包含NULL) count(主鍵)=count(1) /* count(1) ...
[SQL] 指定顯示順序(Order By)
Order By 預設ASC排序 ASC升幕 DESC降幕 以姓名拼音順序來輸出負責人姓名 --以姓名拼音順序來輸出負責人姓名 select [負責人姓名] from [dbo].[負責人清單] order by [姓名拼音] 以升幕排列姓名拼音;降幕排列負責人姓名 也可以指定複數的行來排序 --以升幕排列姓名拼音;降幕排列負責人姓名 select [姓名拼音], [...
[SQL] 結合數個資料表 Inner Join (Join)
Inner Join (Join) inner join:內部結合,兩張表都有的數據才會顯示,可以理解為「有效連結」(兩表的交集)。 (inner join 可以省略 inner,只寫join) --結合販賣資料與商品清單,並取得處理日、商品ID、商品名稱的列表 select T2.處理日, T1.商品ID, T1.商品名稱 from [商品清單] as T1 join [販賣...
[SQL] IS NOT NULL 的使用方式
Null概念 在SQL當中,NULL 代表「未定」、「不明」。 要與null來比較時,要用IS這個比較運算子,不能使用=、!=、<>等作比較,不然將無法得到正確的結果。 條件為「不是Null」,只要在Null前面加上一個否定的邏輯運算子Not即可。 範例 取得已設定販賣單價的商品名稱(販賣單價不為null的商品) --取得已設定販賣單價的商品名稱(販賣單價不為nu...