❶ 在sqlSELECT中用於計算檢索的函數有什麼
這種類型的功能是sql的select函數提供的:在sql語句中,可以定義數據源(通過from指定);可以定義返回的屬性(通過在select後面指定返回列);可以添加條件(where子句);並且可以定義數據顯示的順序(order by子句)。
❷ 什麼SQL函數,作用有哪些
SQL 擁有很多可用於計數和計算的內建函數。
[編輯本段]函數的語法
內建 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
MS Access 中的合計函數
函數 描述
AVG(column) 返回某列的平均值
COUNT(column) 返回某列的行數(不包括 NULL 值)
COUNT(*) 返回被選行數
FIRST(column) 返回在指定的域中第一個記錄的值
LAST(column) 返回在指定的域中最後一個記錄的值
MAX(column) 返回某列的最高值
MIN(column) 返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column) 返回某列的總和
VAR(column)
VARP(column)
在 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 函數的操作面向某個單一的值,並返回基於輸入值的一個單一的值。
MS Access 中的 Scalar 函數
函數 描述
UCASE(c) 將某個域轉換為大寫
LCASE(c) 將某個域轉換為小寫
MID(c,start[,end]) 從某個文本域提取字元
LEN(c) 返回某個文本域的長度
INSTR(c,char) 返回在某個文本域中指定字元的數值位置
LEFT(c,number_of_char) 返回某個被請求的文本域的左側部分
RIGHT(c,number_of_char) 返回某個被請求的文本域的右側部分
ROUND(c,decimals) 對某個數值域進行指定小數位數的四捨五入
MOD(x,y) 返回除法操作的余數
NOW() 返回當前的系統日期
FORMAT(c,format) 改變某個域的顯示方式
DATEDIFF(d,date1,date2) 用於執行日期計算
[編輯本段]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
例子 1
現在,我們希望計算 "OrderPrice" 欄位的平均值。 我們使用如下 SQL 語句: SELECT AVG(OrderPrice) AS OrderAverage FROM Orders結果集類似這樣: OrderAverage
950
例子 2
現在,我們希望找到 OrderPrice 值高於 OrderPrice 平均值的客戶。 我們使用如下 SQL 語句: SELECT Customer FROM OrdersWHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)結果集類似這樣: Customer
Bush
Carter
Adams
COUNT() 函數COUNT() 函數返回匹配指定條件的行數。
[編輯本段]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" 的訂單數。 我們使用如下 SQL 語句: 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" 表中不同客戶的數目。 我們使用如下 SQL 語句: SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders結果集類似這樣: NumberOfCustomers
3
這是 "Orders" 表中不同客戶(Bush, Carter 和 Adams)的數目。 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" 列的第一個值。 我們使用如下 SQL 語句: 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" 列的最後一個值。 我們使用如下 SQL 語句: 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" 列的最大值。 我們使用如下 SQL 語句: 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" 列的最小值。 我們使用如下 SQL 語句: 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" 欄位的總數。 我們使用如下 SQL 語句: SELECT SUM(OrderPrice) AS OrderTotal FROM Orders結果集類似這樣: OrderTotal
5700
GROUP BY 語句合計函數 (比如 SUM) 常常需要添加 GROUP BY 語句。
[編輯本段]GROUP BY 語句
GROUP BY 語句用於結合合計函數,根據一個或多個列對結果集進行分組。
SQL GROUP BY 語法
SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name
[編輯本段]SQL GROUP BY 實例
我們擁有下面這個 "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
現在,我們希望查找每個客戶的總金額(總訂單)。 我們想要使用 GROUP BY 語句對客戶進行組合。 我們使用下列 SQL 語句: SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY Customer結果集類似這樣: Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000
很棒吧,對不對? 讓我們看一下如果省略 GROUP BY 會出現什麼情況: SELECT Customer,SUM(OrderPrice) FROM Orders結果集類似這樣: Customer SUM(OrderPrice)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700
上面的結果集不是我們需要的。 那麼為什麼不能使用上面這條 SELECT 語句呢?解釋如下:上面的 SELECT 語句指定了兩列(Customer 和 SUM(OrderPrice))。"SUM(OrderPrice)" 返回一個單獨的值("OrderPrice" 列的總計),而 "Customer" 返回 6 個值(每個值對應 "Orders" 表中的每一行)。因此,我們得不到正確的結果。不過,您已經看到了,GROUP BY 語句解決了這個問題。
[編輯本段]GROUP BY 一個以上的列
我們也可以對一個以上的列應用 GROUP BY 語句,就像這樣: SELECT Customer,OrderDate,SUM(OrderPrice) FROM OrdersGROUP BY Customer,OrderDate
[編輯本段]HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函數一起使用。
SQL HAVING 語法
SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value
[編輯本段]SQL HAVING 實例
我們擁有下面這個 "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
現在,我們希望查找訂單總金額少於 2000 的客戶。 我們使用如下 SQL 語句: SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY CustomerHAVING SUM(OrderPrice)<2000結果集類似: Customer SUM(OrderPrice)
Carter 1700
現在我們希望查找客戶 "Bush" 或 "Adams" 擁有超過 1500 的訂單總金額。 我們在 SQL 語句中增加了一個普通的 WHERE 子句: SELECT Customer,SUM(OrderPrice) FROM OrdersWHERE Customer='Bush' OR Customer='Adams'GROUP BY CustomerHAVING SUM(OrderPrice)>1500結果集: Customer SUM(OrderPrice)
Bush 2000
Adams 2000
[編輯本段]UCASE() 函數
UCASE 函數把欄位的值轉換為大寫。
SQL UCASE() 語法
SELECT UCASE(column_name) FROM table_name
[編輯本段]SQL UCASE() 實例
我們擁有下面這個 "Persons" 表: Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
現在,我們希望選取 "LastName" 和 "FirstName" 列的內容,然後把 "LastName" 列轉換為大寫。 我們使用如下 SQL 語句: SELECT UCASE(LastName) as LastName,FirstName FROM Persons結果集類似這樣: LastName FirstName
ADAMS John
BUSH George
CARTER Thomas
[編輯本段]LCASE() 函數
LCASE 函數把欄位的值轉換為小寫。
SQL LCASE() 語法
SELECT LCASE(column_name) FROM table_name
[編輯本段]SQL LCASE() 實例
我們擁有下面這個 "Persons" 表: Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
現在,我們希望選取 "LastName" 和 "FirstName" 列的內容,然後把 "LastName" 列轉換為小寫。 我們使用如下 SQL 語句: SELECT LCASE(LastName) as LastName,FirstName FROM Persons結果集類似這樣: LastName FirstName
adams John
bush George
carter Thomas
[編輯本段]MID() 函數
MID 函數用於從文本欄位中提取字元。
SQL MID() 語法
SELECT MID(column_name,start[,length]) FROM table_name參數 描述
column_name 必需。要提取字元的欄位。
start 必需。規定開始位置(起始值是 1)。
length 可選。要返回的字元數。如果省略,則 MID() 函數返回剩餘文本。
[編輯本段]SQL MID() 實例
我們擁有下面這個 "Persons" 表: Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
現在,我們希望從 "City" 列中提取前 3 個字元。 我們使用如下 SQL 語句: SELECT MID(City,1,3) as SmallCity FROM Persons結果集類似這樣: SmallCity
Lon
New
Bei
[編輯本段]LEN() 函數
LEN 函數返迴文本欄位中值的長度。
SQL LEN() 語法
SELECT LEN(column_name) FROM table_name
[編輯本段]SQL LEN() 實例
我們擁有下面這個 "Persons" 表: Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
現在,我們希望取得 "City" 列中值的長度。 我們使用如下 SQL 語句: SELECT LEN(City) as LengthOfAddress FROM Persons結果集類似這樣: LengthOfCity
6
8
7
[編輯本段]ROUND() 函數
ROUND 函數用於把數值欄位舍入為指定的小數位數。
SQL ROUND() 語法
SELECT ROUND(column_name,decimals) FROM table_name參數 描述
column_name 必需。要舍入的欄位。
decimals 必需。規定要返回的小數位數。
[編輯本段]SQL ROUND() 實例
我們擁有下面這個 "Procts" 表: Prod_Id ProctName Unit UnitPrice
1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85
現在,我們希望把名稱和價格舍入為最接近的整數。 我們使用如下 SQL 語句: SELECT ProctName, ROUND(UnitPrice,0) as UnitPrice FROM Procts結果集類似這樣: ProctName UnitPrice
gold 32
silver 12
copper 7
[編輯本段]NOW() 函數
NOW 函數返回當前的日期和時間。
SQL NOW() 語法
SELECT NOW() FROM table_name
[編輯本段]SQL NOW() 實例
我們擁有下面這個 "Procts" 表: Prod_Id ProctName Unit UnitPrice
1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85
現在,我們希望顯示當天的日期所對應的名稱和價格。 我們使用如下 SQL 語句: SELECT ProctName, UnitPrice, Now() as PerDate FROM Procts結果集類似這樣: ProctName UnitPrice PerDate
gold 32.35 12/29/2008 11:36:05 AM
silver 11.56 12/29/2008 11:36:05 AM
copper 6.85 12/29/2008 11:36:05 AM
[編輯本段]FORMAT() 函數
FORMAT 函數用於對欄位的顯示進行格式化。
SQL FORMAT() 語法
SELECT FORMAT(column_name,format) FROM table_name參數 描述
column_name 必需。要格式化的欄位。
format 必需。規定格式。
[編輯本段]SQL FORMAT() 實例
我們擁有下面這個 "Procts" 表: Prod_Id ProctName Unit UnitPrice
1 gold 1000 g 32.35
2 silver 1000 g 11.56
3 copper 1000 g 6.85
現在,我們希望顯示每天日期所對應的名稱和價格(日期的顯示格式是 "YYYY-MM-DD")。 我們使用如下 SQL 語句: SELECT ProctName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDateFROM Procts結果集類似這樣: ProctName UnitPrice PerDate
gold 32.35 12/29/2008
silver 11.56 12/29/2008
copper 6.85 12/29/2008
❸ 什麼是SQL標量函數
標量函數:標量函數用於對傳遞給它的一個或者多個參數值進行處理和計算,並返回一個單一的值。
標量值函數示例:
CREATE FUNCTION dbo.Foo()
RETURNS int
AS
BEGIN
declare @n int
select @n=3
return @n
END
SQL中的函數
在Transact-SQL語言中,函數被用來執行一些特殊的運算以支持SQL Server的標准命令。Transact-SQL 編程語言提供了三種函數:
一行集函數:行集函數可以在Transact-SQL語句中當作表引用。
二聚合函數:聚合函數用於對一組值執行計算並返回一個單一的值。
三標量函數:標量函數用於對傳遞給它的一個或者多個參數值進行處理和計算,並返回一個單一的值。
另外:
SQL Server 2000 允許用戶創建自定義函數,自定義函數可以有返回值。
自定義函數分為:標量值函數或表值函數
•如果 RETURNS 子句指定一種標量數據類型,則函數為標量值函數。可以使用多條 Transact-SQL 語句定義標量值函數。
•如果 RETURNS 子句指定 TABLE,則函數為表值函數。
❹ SQL 有哪些函數SQL中有哪些函數
聚合函數是對一組值執行計算並返回單一的值的函數,它經常與SELECT語句的GROUP BY子句一同使用,SQL SERVER 中具體有哪些聚合函數呢?我們來一一看一下:
AVG 返回指定組中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no
2. COUNT 返回指定組中項目的數量。
例:select count(prd_no) from sales
3. MAX 返回指定數據的最大值。
例:select prd_no,max(qty) from sales group by prd_no
4. MIN 返回指定數據的最小值。
例:select prd_no,min(qty) from sales group by prd_no
5. SUM 返回指定數據的和,只能用於數字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no
6. COUNT_BIG 返回指定組中的項目數量,與COUNT函數不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales
7. GROUPING 產生一個附加的列,當用CUBE或ROLLUP運算符添加行時,輸出值為1.當所添加的行不是由CUBE或ROLLUP產生時,輸出值為0.
例:select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup
8. BINARY_CHECKSUM 返回對表中的行或表達式列表計算的二進制校驗值,用於檢測表中行的更改。
例:select prd_no,binary_checksum(qty) from sales group by prd_no
9. CHECKSUM_AGG 返回指定數據的校驗值,空值被忽略。
例:select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no
10. CHECKSUM 返回在表的行上或在表達式列表上計算的校驗值,用於生成哈希索引。
11. STDEV 返回給定表達式中所有值的統計標准偏差。
例:select stdev(prd_no) from sales
12. STDEVP 返回給定表達式中的所有值的填充統計標准偏差。
例:select stdevp(prd_no) from sales
13. VAR 返回給定表達式中所有值的統計方差。
例:select var(prd_no) from sales
14. VARP 返回給定表達式中所有值的填充的統計方差。
例:select varp(prd_no) from sales
❺ sql聚合函數的應用
聚合函數對一組值執行計算,並返回單個值。除了
COUNT
以外,聚合函數都會忽略空值。聚合函數經常與
SELECT
語句的
GROUP
BY
子句一起使用。
所有聚合函數均為確定性函數。也就是說,只要使用一組特定輸入值調用聚合函數,該函數總是返回相同的值。有關函數確定性的詳細信息,請參閱確定性函數和不確定性函數。
聚合函數只能在以下位置作為表達式使用:
SELECT
語句的選擇列表(子查詢或外部查詢)。
COMPUTE
或
COMPUTE
BY
子句。
HAVING
子句。
Transact-SQL
提供下列聚合函數:
AVG
MIN
CHECKSUM
SUM
CHECKSUM_AGG
STDEV
COUNT
STDEVP
COUNT_BIG
VAR
GROUPING
VARP
❻ 誰知道ado如何使用sql函數
均值、總數、最小值、最大值、總和、標准差、變異數等統計。使用Recordset對象
時,也可使用這些SQL函數。SQL函數包括如下:Avg函數:計算查詢中某一特定欄位資料的算術平均值。 Count函數:計算符合查詢條件的記錄數。 Min, Max函數:傳回指定欄位之中符合查詢條件的第一條、最末條記錄的資料。 First, Last函數:傳回指定欄位之中符合查詢條件的最小值、最大值。 StDev函數:計算指定欄位之中符合查詢條件的標准差。 Sum函數:計算指定欄位之中符合查詢條件的資料總和。 Var,函數:計算指定欄位之中符合查詢條件的變異數估計值。
的結果。ASP程式碼rs21.asp如下:<%Set conn1 = Server.CreateObject("ADODB.Connection") conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver=
{Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;" Set rs2 = Server.CreateObject("ADODB.Recordset")SqlStr = "SELECT Avg(價格) As 平均 From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Avg: " & rs2("平均")rs2.CloseSqlStr = "SELECT Count(價格) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Count(價格): " & rs2(0)rs2.CloseSqlStr = "SELECT Count(*) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Count(*): " & rs2(0)rs2.CloseSqlStr = "SELECT Sum(價格) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Sum: " & rs2(0)rs2.CloseSqlStr = "SELECT Min(價格) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Min: " & rs2(0)rs2.CloseSqlStr = "SELECT Max(價格) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Max: " & rs2(0)rs2.CloseSqlStr = "SELECT First(價格) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>First(價格): " & rs2(0)rs2.CloseSqlStr = "SELECT Last(價格) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Last(價格): " & rs2(0)rs2.CloseSqlStr = "SELECT First(代號) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>First(代號): " & rs2(0)rs2.CloseSqlStr = "SELECT Last(代號) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Last(代號): " & rs2(0)rs2.CloseSqlStr = "SELECT StDev(價格) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>StDev: " & rs2(0)rs2.CloseSqlStr = "SELECT Var(價格) From 產品"rs2.Open SqlStr,conn1,1,1Response.Write "<BR>Var: " & rs2(0)rs2.Closeconn1.Close%>SQL函數,詳細描述如下:Avg函數Avg函數,計算查詢中某一特定欄位資料的算術平均值。 語法為Avg(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數可
以是一個內部或使用者定義的,但不能為其它的SQL函數。Avg函數在計算時,不包含任何值為 Null 的資料。Count函數Count函數,計算符合查詢條件的記錄條數。 語法為Count (運算式)。運算式,可為欄位名稱、*、多個欄位名稱、運算式、
或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的SQL函數。Count 函數於計算時,不包含任何值為 Null 的資料。但是,Count(*) 則計算所有符合查詢條件的記錄條數,包含那些Null的資料。 如果Count(欄位名稱) 的欄位名稱為多個欄位,將欄位名稱之間使用 & 分隔。
多個欄位當中,至少有一個欄位的值不為Null的情況下,Count函數才會計算為一條
記錄。如果多個欄位都為Null,則不算是一條記錄。譬如:SELECT Count(價格 & 代號) From 產品First/Last函數 First函數、Last函數,傳回指定欄位之中符合查詢條件的第一條、最末條記錄
的資料。 語法為First(運算式) 和 Last(運算式)。運算式,可為欄位名稱、運算式、或
一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的SQL函數。Min/Max函數 Min函數、Max函數,傳回指定欄位之中符合查詢條件的最小值、最大值。 語法為Min(運算式) 和 Max(運算式)。運算式,可為欄位名稱、運算式、或一個
函數,此函數可以是一個內部或使用者定義的,但不能為其它的SQL函數。StDev函數StDev函數,計算指定欄位之中符合查詢條件的標准差。 語法為StDev(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數
可以是一個內部或使用者定義的,但不能為其它的SQL函數。 如果符合查詢條件的記錄為兩個以下時,StDev函數將傳回一個Null 值,該表示
不能計算標准差。Sum函數Sum函數,計算指定欄位之中符合查詢條件的資料總和。 語法為Sum(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數可
以是一個內部或使用者定義的,但不能為其它的SQL函數。Sum函數可使用兩個欄位資料運算式,譬如計算產品的單價及數量欄位的合計:SELECT Sum(單價 * 數量) FROM 產品Var函數Var函數,計算指定欄位之中符合查詢條件的變異數估計值。 語法為Var(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數可
以是一個內部或使用者定義的,但不能為其它的SQL函數。 如果符合查詢條件的記錄為兩個以下時,Var函數將傳回一個Null 值,該表示不
能計算變異數。
❼ SQL函數(方差)的含義
Var函數
Var函數,計算指定欄位之中符合查詢條件的變異數估計值。
語法為Var(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數可
以是一個內部或使用者定義的,但不能為其它的SQL函數。
如果符合查詢條件的記錄為兩個以下時,Var函數將傳回一個Null 值,該表示不
能計算變異數。
❽ 如何使用sql函數平均值、總數、最小值、最大值、總和、標准差
avg函數:計算查詢中某一特定欄位資料的算術平均值。
count函數:計算符合查詢條件的記錄數。
min, max函數:傳回指定欄位值中符合查詢條件的第一條、最末條記錄的資料。
first, last函數:傳回指定欄位值中符合查詢條件的最小值、最大值。
stdev函數:計算指定欄位值中符合查詢條件的標准差。
sum函數:計算指定欄位值中符合查詢條件的資料總和。
var,函數:計算指定欄位值中符合查詢條件的變異數估計值。
❾ sql aggregate 函數是什麼資料庫可以用
sql aggregate 函數是什麼資料庫可以用
SQL 擁有很多可用於計數和計算的內建函數。 [編輯本段]函數的語法 內建 SQL 函數的語法是: SELECT function(列) FROM 表 [編輯本段]函數的類型 在 SQL 中,基本的函數類型和種類有若干種。函數的基本類型是: Aggregate 函數 Scalar 函數
❿ SQL的基本函數
【二】SQL的基本函數
2.1 關系型資料庫SQL命令類別
數據操縱語言:DML: select; insert; delete; update; merge.
數據定義語言:DDL: create; alter; drop; truncate; rename; comment.
事務控制語言:TCL: commit; rollback; savepoint.
數據控制語言:DCL: grant; revoke.
2.2 單行函數與多行函數
單行函數:指一行數據輸入,返回一個值得函數。所以查詢一個表時,對選擇的每一行數據都會返回一個結果。
SQL>select empno,lower(ename) from emp;
多行函數:指多行數據輸入,返回一個值得函數。所以對表的群組進行操作,並且每組返回一個結果。(典型的是聚合函數)
SQL>select sum(sal) from emp;
2.3 單行函數的幾種類型
2.3.1 字元型函數
lower('SQL Course')----->sql course 返回小寫
upper('sql course')----->SQL COURSE 返回大學
initcap('SQL course')-----> Sql Course 每個單字返回首字母大寫
concat('good','string')---->good string 拼接 只能拼接2個字元串
substr('String',1,3)---->Str 從第1位開始截取3位數,
演變:只有兩個參數的
substr('String',3) 正數第三位起始,得到後面所有字元
substr('String',-2) 倒數第二位,起始,得到最後所有字元
instr('t#i#m#r#a#n#','#') --->找第一個#字元在那個絕對位置,得到的數值
Instr參數經常作為substr的第二個參數值
演變:Instr參數可有四個之多
如select instr('aunfukk','u',-1,1) from al; 倒數第一個u是哪個位置,結果返回5
length('String')---->6 長度,得到的是數值
length參數又經常作為substr的第三個參數
lpad('first',10,'#39;)左填充
rpad(676768,10,'*')右填充
replace('JACK and JUE','J','BL')---->BLACK and BLUE
trim('m' from 'mmtimranm')---->timran 兩頭截,這里的『m』是截取集,僅能有一個字元
trim( ' timran ')---->timran 作用是兩頭去空字元
處理字元串時,利用字元型函數的嵌套組合是非常有效的:
create table customers(cust_name varchar2(20));
insert into customers values('Lex De Hann');
insert into customers values('Renske Ladwig');
insert into customers values('Jose Manuel Urman');
insert into customers values('Joson Malin');
select * from customers;
CUST_NAME
--------------------
Lex De Hann
Renske Ladwig
Jose Manuel Urman
Joson Malin
一共四條記錄,客戶有兩個名的,也有三個名的,現在想列出僅有三個名的客戶,且第一個名字用*號略去
答案之一:
SELECT LPAD(SUBSTR(cust_name,INSTR(cust_name,' ')),LENGTH(cust_name),'*') "CUST NAME"
FROM customers
WHERE INSTR(cust_name,' ',1,2)>0;
CUST NAME
------------------------------------------------------------------------------------------------------------------------
*** De Hann
**** Manuel Urman
分析:
先用INSTR(cust_name,' ')找出第一個空格的位置,
然後,SUBSTR(cust_name,INSTR(cust_name,' '))從第一個空格開始往後截取字元串到末尾,結果是第一個空格以後所有的字元,
最後,LPAD(SUBSTR(cust_name,INSTR(cust_name,' ')),LENGTH(cust_name),'*')用LPAD左填充到cust_name原來的長度,不足的部分用*填充,也就是將第一個空格前的位置,用*填充。
where後過濾是否有三個名字,INSTR(cust_name, ' ',1,2)從第一個位置,從左往右,查找第二次出現的空格,如果返回非0值,則說明有第二個空格,則有第三個名字。
2.3.2 數值型函數
round 對指定的值做四捨五入,round(p,s) s為正數時,表示小數點後要保留的位數,s也可以為負數,但意義不大。
round:按指定精度對十進制數四捨五入,如:round(45.923, 1),結果,45.9
round(45.923, 0),結果,46
round(45.923, -1),結果,50
trunc 對指定的值取整 trunc(p,s)
trunc:按指定精度截斷十進制數,如:trunc(45.923, 1),結果,45.9
trunc(45.923),結果,45
trunc(45.923, -1),結果, 40
mod 返回除法後的余數
SQL> select mod(100,12) from al;
2.3.3 日期型函數
因為日期在oracle里是以數字形式存儲的,所以可對它進行加減運算,計算是以天為單位。
預設格式:DD-MON-RR.
可以表示日期范圍:(公元前)4712 至(公元)9999
時間格式
SQL> select to_date('2003-11-04 00:00:00' ,'YYYY-MM-DD HH24:MI:SS') FROM al;
SQL> select sysdate+2 from al; 當前時間+2day
SQL> select sysdate+2/24 from al; 當前時間+2hour
SQL> select sysdate+2/1440 from al; 當前時間+2分鍾
SQL> select (sysdate-hiredate)/7 week from emp; 兩個date類型差,結果是以天為整數位的實數。
①MONTHS_BETWEEN 計算兩個日期之間的月數
SQL>select months_between('1994-04-01','1992-04-01') mm from al;
查找emp表中參加工作時間>30年的員工
SQL>select * from emp where months_between(sysdate,hiredate)/12>32;
很容易認為單行函數返回的數據類型與函數類型一致,對於數值函數類型而言的確如此,但字元和日期函數可以返回任何數據類型的值。比如instr函數是字元型的,months_between函數是日期型的,但它們返回的都是數值。
②ADD_MONTHS 給日期增加月份
SQL>select hiredate,add_months(hiredate,4) from emp;
③LAST_DAY 日期當前月份的最後一天
SQL>select hiredate,last_day(hiredate) from emp;
④NEXT_DAY NEXT_DAY的第2個參數可以是數字1-7,分別表示周日--周六(考點)
比如要取下一個星期六,則應該是:
SQL>select next_day(sysdate,7) FROM DUAL;
⑤ROUND(p,s),TRUNC(p,s)在日期中的應用,如何舍入要看具體情況,s是MONTH按30天計,應該是15舍16入,s是YEAR則按6舍7入計算。
SQL>SELECT empno, hiredate,round(hiredate,'MONTH') AS round,trunc(hiredate,'MONTH') AS trunc FROM emp;
SQL>SELECT empno, hiredate, round(hiredate,'YEAR') AS round,trunc(hiredate,'YEAR') AS trunc FROM emp;
2.3.4 幾個有用的函數和表達式
1)DECODE函數和CASE表達式:
實現sql語句中的條件判斷語句,具有類似高級語言中的if-then語句的功能。
decode函數源自oracle, case表達式源自sql標准,實現功能類似,decode語法更簡單些。
decode函數用法:
SQL> SELECT job, sal,
decode(job, 'ANALYST', SAL*1.1, 'CLERK', SAL*1.15,'MANAGER', SAL*1.20, SAL) SALARY FROM emp
decode函數的另幾種常見用法:
SQL>select ename,job,decode(job,'MANAGER','中層幹部') leader from emp;
SQL> select ename,job,comm,decode (comm,null,'nonsale','sale') saleman from emp;
註:單一列處理,共四個參數:含義是:comm 如果為null就取'nonsale,否則取'sale'
SQL> select sal,sign(sal-1500) from emp;
SQL> select ename,decode (sign(sal-1500), 1, 'NORMAL','LOW') as "LEV" from emp;
註:sign()函數根據某個值是0、正數還是負數,分別返回0、1、-1,含義是:工資大於1500,返回1,真取'NORMAL',假取'LOW'
CASE表達式第一種用法:
SQL> SELECT job, sal,
case job when 'ANALYST' then SAL*1.10
when 'CLERK' then SAL*1.15
when 'MANAGER' then SAL*1.20
else sal end SALARY
FROM emp
CASE表達式第二種用法:
SQL> SELECT job, sal, case
when job='ANALYST' then SAL*1.1
when job='CLERK' then SAL*1.15
when job='MANAGER' then SAL*1.20
else sal end SALARY
FROM emp
以上三種寫法結果都是一樣的
CASE第二種語法比第一種語法增加了搜索功能。形式上第一種when後跟定值,而第二種還可以使用表達式和比較符。
看一個例子
SQL> SELECT ename,sal,case
when sal>=3000 then '高級'
when sal>=2000 then '中級'
else '低級' end 級別
FROM emp
再看一個例子:使用了復雜的表達式
SQL> SELECT AVG(CASE
WHEN sal BETWEEN 500 AND 1000 AND JOB='CLERK'
THEN sal ELSE null END) "CLERK_SAL"
from emp;
比較;
SQL> select avg(sal) from emp where job='CLERK';
2)DISTINCT(去重)限定詞的用法:
distinct貌似多行函數,嚴格來說它不是函數而是select子句中的一個選項。
SQL> select distinct job from emp; 消除錶行重復值。
SQL> select distinct job,deptno from emp; 重復值是後面的欄位組合起來考慮的
SQL> select distinct * from emp; 消除重復記錄
3)sys_context 獲取環境上下文的函數(多用於應用環境)
scott遠程登錄
SQL>select SYS_CONTEXT('USERENV','IP_ADDRESS') from al;
--------------------------------------------------------------------------------
192.168.0.136
SQL> select sys_context('userenv','sid') from al;
SYS_CONTEXT('USERENV','SID')
--------------------------------------------------------------------------------
129
SQL> select sys_context('userenv','terminal') from al;
SYS_CONTEXT('USERENV','TERMINAL')
--------------------------------------------------------------------------------
TIMRAN-222C75E5
the end !!!
@jackman 共築美好!