高級sql簡單介紹
高級sql簡單介紹
一、查詢間使用運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重複行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重複行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重複行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重複行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重複行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重複行。
注:使用運算詞的幾個查詢結果行必須是一致的。
二、外連接
A、left outer join:
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。
B:right outer join:
右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
[color=blue:b36c9124a3]注:複合外連接按照從左到右的順序執行連接,左邊連接的結果集和右邊連接[/color:b36c9124a3]
三、超級分組和移動函數
A:grouping sets:用來在單個sql中形成多級分組。
例:select company_id,node_id,count(customer_id) from customer group by grouping sets(company_id,node_id)
B:rollup:可以在單個數據庫操作中形成多個分組。
例:select company_id,node_id,count(customer_id) from customer group by rollup(company_id,node_id)
注:rollup操作不是可交換的操作,指定用戶組的順序是很重要的。
C:cube: 生成分組表中分組的所有組合。
例:select company_id,node_id,count(customer_id) from customer group by cube(company_id,node_id)
D:over:移動函數可以幫助實現移動的數據分析
Select date,avg(qty) over(order by date rows between 1 preceding and 1 following) as values from sale
附錄:常用函數介紹
1、類型轉化函數:
轉化爲數字類型的:
decimal, double, Integer, smallint,real
Hex(arg):轉化爲參數的16進製表示。
轉化爲字符串類型的:
char, varchar
Digits(arg):返回arg的字符串表示法,arg必須爲decimal。
轉化爲日期時間的:
date, time,timestamp
2、時間日期:
year, quarter, month, week, day, hour, minute ,second
dayofyear(arg):返回arg在年內的天值
Dayofweek(arg):返回arg在周內的天值
days(arg):返回日期的整數表示法,從0001-01-01來的天數。
midnight_seconds(arg):午夜和arg之間的秒數。
Monthname(arg):返回arg的月份名。
Dayname(arg):返回arg的星期。
3、字符串函數:
length,lcase, ucase, ltrim, rtrim
Coalesce(arg1,arg2….):返回參數集中第一個非null參數。
Concat (arg1,arg2):連接兩個字符串arg1和arg2。
insert(arg1,pos,size,arg2):返回一個,將arg1從pos處刪除size個字符,將arg2插入該位置。
left(arg,length):返回arg最左邊的length個字符串。
locate(arg1,arg2,):在arg2中查找arg1第一次出現的位置,指定pos,則從arg2的pos處開始找arg1第一次出現的位置。
posstr(arg1,arg2):返回arg2第一次在arg1中出現的位置。
repeat(arg1 ,num_times):返回arg1被重複num_times次的字符串。
replace(arg1,arg2,arg3):將在arg1中的所有arg2替換成arg3。
right(arg,length):返回一個有arg左邊length個字節組成的字符串。
space(arg):返回一個包含arg個空格的字符串。
substr(arg1,pos,):返回arg1中pos位置開始的length個字符,如果沒指定length,則返回剩餘的字符。
4、數學函數:
Abs, count, max, min, sum
Ceil(arg):返回大於或等於arg的最小整數。
Floor(arg):返回小於或等於參數的最小整數。
Mod(arg1,arg2):返回arg1除以arg2的餘數,符號與arg1相同。
Rand():返回1到1之間的隨機數。
Power(arg1,arg2):返回arg1的arg2次方。
Round(arg1,arg2):四捨五入截斷處理,arg2是位數,如果arg2爲負,則對小數點前的數做四捨五入處理。
Sigh(arg):返回arg的符號指示符。-1,0,1表示。
truncate(arg1,arg2):截斷arg1,arg2是位數,如果arg2是負數,則保留arg1小數點前的arg2位。
5、其他:
nullif(arg1,arg2):如果2個參數相等,則返回null,否則,返回參數1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.