SQL 進階(9) 函數,sql函數

來源:互聯網
上載者:User

SQL 進階(9) 函數,sql函數
SQL 進階(9) 函數函數的文法        內建 SQL 函數的文法是:

SELECT function(列) FROM 表
函數的類型        在 SQL 中,基本的函數類型和種類有若干種。函數的基本類型是:
  • Aggregate 函數 
  • Scalar 函數 
合計函數(Aggregate functions)        Aggregate 函數的操作面向一系列的值,並返回一個單一的值。
        注釋:如果在 SELECT 語句的項目列表中的眾多其它運算式中使用 SELECT 語句,則這個 SELECT 必須使用 GROUP BY 語句!
        "Persons" table (在大部分的例子中使用過)
Name Age
Adams, John 38
Bush, George 33
Carter, Thomas 28
        在 SQL Server 中的合計函數
函數 描述
AVG(column) 返回某列的行數
BINARY_CHECKSUM  
CHECKSUM  
CHECKSUM_AGG  
COUNT(column) 返回某列的行數(不包括NULL值)
COUNT(*) 返回被選行數
COUNT(DISTINCT column) 返回相異結果的數目
FIRST(column) 返回在指定的域中第一個記錄的值(SQLServer2000 不支援)
LAST(column) 返回在指定的域中最後一個記錄的值(SQLServer2000 不支援)
MAX(column) 返回某列的最高值
MIN(column) 返回某列的最低值
STDEV(column)  
STDEVP(column)  
SUM(column) 返回某列的總和
VAR(column)  
VARP(column)  
Scalar 函數
        Scalar 函數的操作面向某個單一的值,並返回基於輸入值的一個單一的值。
SQL AVG 函數定義和用法        AVG 函數返回數值列的平均值。NULL 值不包括在計算中。
SQL AVG() 文法
SELECT AVG(column_name) FROM table_name
SQL AVG() 執行個體        我們擁有下面這個 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望計算 "OrderPrice" 欄位的平均值。
        我們使用如下 SQL 陳述式:
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
        結果集類似這樣:
OrderAverage
950
        現在,我們希望找到 OrderPrice 值高於 OrderPrice 平均值的客戶。
SELECT Customer FROM OrdersWHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
        結果集類似這樣:
Customer
Bush
Carter
Adams
SQL COUNT() 文法SQL COUNT(column_name) 文法
        COUNT(column_name) 函數返回指定列的值的數目(NULL 不計入):
SELECT COUNT(column_name) FROM table_name
SQL COUNT(*)文法
        COUNT(*) 函數返回表中的記錄數:
SELECT COUNT(*) FROM table_name
SQL COUNT(DISTINCT column_name) 文法
        COUNT(DISTINCT column_name) 函數返回指定列的不同值的數目:
SELECT COUNT(DISTINCT column_name) FROM table_name
        注釋:COUNT(DISTINCT) 適用於 ORACLE 和 Microsoft SQL Server,但是無法用於 Microsoft Access。
SQL COUNT(column_name) 執行個體
        我們擁有下列 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望計算客戶 "Carter" 的訂單數。 
SELECT COUNT(Customer) AS CustomerNilsen FROM OrdersWHERE Customer='Carter'
        以上 SQL 陳述式的結果是 2,因為客戶 Carter 共有 2 個訂單: 
CustomerNilsen
2
SQL COUNT(*) 執行個體 
        如果我們省略 WHERE 子句,比如這樣: 
SELECT COUNT(*) AS NumberOfOrders FROM Orders
        結果集類似這樣:
NumberOfOrders
6
SQL COUNT(DISTINCT column_name) 執行個體
        現在,我們希望計算 "Orders" 表中不同客戶的數目。
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders
        結果集類似這樣:
NumberOfCustomers
3
FIRST() 函數        FIRST() 函數返回指定的欄位中第一個記錄的值。
        提示:可使用 ORDER BY 語句對記錄進行排序。
SQL FIRST() 文法
SELECT FIRST(column_name) FROM table_name
SQL FIRST() 執行個體
        我們擁有下面這個 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望尋找 "OrderPrice" 列的第一個值。
SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders
        結果集類似這樣:
FirstOrderPrice
1000
LAST() 函數        LAST() 函數返回指定的欄位中最後一個記錄的值。
        提示:可使用 ORDER BY 語句對記錄進行排序。
SQL LAST() 文法
SELECT LAST(column_name) FROM table_name
SQL LAST() 執行個體
        我們擁有下面這個 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望尋找 "OrderPrice" 列的最後一個值。
SELECT LAST(OrderPrice) AS LastOrderPrice FROM Orders
        結果集類似這樣:
LastOrderPrice
100
MAX() 函數        MAX 函數返回一列中的最大值。NULL 值不包括在計算中。
SQL MAX() 文法
SELECT MAX(column_name) FROM table_name
        注釋:MIN 和 MAX 也可用於文本列,以獲得按字母順序排列的最高或最低值。SQL MAX() 執行個體
        我們擁有下面這個 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望尋找 "OrderPrice" 列的最大值。
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders
        結果集類似這樣:
LargestOrderPrice
2000
MIN() 函數        MIN 函數返回一列中的最小值。NULL 值不包括在計算中。
SQL MIN() 文法
SELECT MIN(column_name) FROM table_name
        注釋:MIN 和 MAX 也可用於文本列,以獲得按字母順序排列的最高或最低值。
SQL MIN() 執行個體
        我們擁有下面這個 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望尋找 "OrderPrice" 列的最小值。
SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders
        結果集類似這樣:
SmallestOrderPrice
100
SUM() 函數        SUM 函數返回數值列的總數(總額)。
SQL SUM() 文法
SELECT SUM(column_name) FROM table_name
SQL SUM() 執行個體
        我們擁有下面這個 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
        現在,我們希望尋找 "OrderPrice" 欄位的總數。
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders
        結果集類似這樣:
OrderTotal
5700

SQL 有什函數? 越詳細越好

這種題上網一搜尋一大把,也用不著來這裡問
給你發點
1.絕對值
SQL:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from dual
4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from dual
5.四捨五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from dual 1.2346
6.e為底的冪
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from dual 2.71828182
7.取e為底的對數
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from dual; 1
8.取10為底對數
S:select log10(10) value 1
O:select log(10,10) value from dual; 1
9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from dual 16
10.取平方根
S:select SQRT(4) value 2
O:select SQRT(4) value from dual 2
11.求任意數為底的冪
S:select power(3,4) value 81
O:select power(3,4) value from dual 81
12.取隨機數
S:select rand() value
O:select sys.dbms_random.value(0,1) value from dual;
13.取符號
S:select sign(-8) value -1
O:select sign(-8) value from dual -1
----------數學函數
14.圓周率
S:SELECT PI() value 3.1415926535897931
O:不知道
15.sin,cos,tan 參數都以弧度為單位
例如:select sin(PI()/2) value 得到1(SQLServer)
16.Asin,Acos,Atan,Atan2 返回弧度
17.弧度角度互換(SQLServer,Oracle不知道)
DEGREES:弧度-〉角度
RADIANS:角度-〉弧度
---------數值間比較
18. 求集合最大值
S:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:sele......餘下全文>>
 
常用的sql函數

1.isnull() 空記錄操作
2.getdate() 擷取目前時間
3.convert() 類型轉換
4.dateadd() 日期增加
5.datediff() 日期差
6.substring() 取字串
7.replace() 字串替換
8.left(),right() 取左右子字串
9.LTrim(),RTrim() 去字串左右空格
10.STR(),int() 類型轉換
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.