1. 程式人生 > >SQL系列(二)集合運算和函式的使用

SQL系列(二)集合運算和函式的使用

三、集合運算(SET)
1.(UNION)查詢兩個表中不重複的值 : select 列名1 from 表1 UNION select 列名1 from 表2;  (UNION ALL  顯示全部進行合併)
2.(INTERSECT)查詢兩個表中相同的資料: select * from 表1 INTERSECT select * from 表2;
3.(MINUS)返回存在於表1卻不存在表2的記錄: select * from 表1 MINUS select * from 表2;




四、函式(COUNT,SUM,AVG,MAX,MIN)


1、count 返回滿足where條件中記錄的個數 
eg: select COUNT(*) 別名1 from 表名 where 列名<10; (可以加別名也可不加)
2. SUM 某一列所有數值的和
        select SUM(列名1) 別名1 from 表名;
多個列的和  
select SUM(列名1) 別名1,SUM(列名2) 別名2.。。。。。。 from 表名;
所有點數在300以上的資料
select SUM(列名1) 別名1,SUM(列名2) 別名2 from 表名 where 列名1 >=300 (此處填寫判斷條件) 
3.AVG 返回某一列的平均值
select AVG(列名1) 別名1 from 表名; (可使用where條件語句修飾)
4.MAX  MIN返回某一列的最大/小值(數值,字元皆可)
select MAX(列名) from 表名; (可使用where條件語句修飾)
5.VARIANCE (方差) 
select VARIANCE(列名) from 表名;
6.STDDEV(標準差)  某一列數值的標準差
select STDDEV(列名) from 表名;
7.時間和日期
(1)ADD_MONTHS  將給定的 日期增加一個月(不能用於字元或數字型別)
select 列名1 ,列名2,列名3,ADD_MONTHS(列名1,2) from 表名;  (也可以加where約束)   列名1 時間推出2個月
(2)LAST_DAY  返回指定月份的最後一天,如:想知道列1中給出日期中月份的最後一天是幾號時
select 列1,LAST_DAY(列1) from 表名;
---閏年的最後一天
select LAST_DAY('1-FRB-95') NON_LEAP,LAST_DAY('1-FEB-96') LEAP from 表名;
(3)MONTHS_BETWEEW 返回給定的兩個日期中有多少個月
select 列1,列2 ,列3,MONTHS_BETWEEN(列1,列2) 列4 from 表名;
(4)NEW_TIME   調整時間到你所在的時區
select 列1 時區型別1 ,NEW_TIME(列1,'時區型別1','時區型別2') from 表名;
(5)NEXT_DAY 返回與指定日期在同一個星期或之後一個星期內的 你所要求的星期天數的確切日期
SELECT 列名, NEXT_DAY(STARTDATE,'FRIDAY')FROM 表名;
(6)SYSDATE 返回系統的日期和時間
select 列名 SYSDATE from 表名;
8.數學函式
(1)ABS 返回給定數字的絕對值   select ABS(A) ABSOLUTE_VALUE from 表名
(2)CEIL和FLOOR  CEIL返回給定引數相等或比給定引數大的最小整數,FLOOR  返回相等或比給定引數小的最大整數
select B CEIL(B) 列名 from 表名;
(3)COS COSH SIN SINH TAN TANH 三角函式
select 值1,三角函式(值1) from 表名;
9.字元函式
(1)CHR 數返回與所給數值引數等當的字元
select 列名,CHR(列名) from 表名;
(2)CONCAT 連線兩個字串
select  CONCAT{列名1,列名2} “別名” from 表名;
(3)INITCAP 將引數的第一個字母變為大寫此外其它的字母則轉換成小寫
select 列名1 別名1,INITCAP(列名1) 別名2 from 表名;
(4)LOWER和UPPER   LOWER 將引數轉換為全部小寫字母而 UPPER 則把引數全部轉換成大寫字母
 
後面還有其他函式,此處不做更詳細介紹。