◆◆ SQL 계산 함수
SQL 계산 함수를 사용하여 일련의 값에 대한 다양한 통계를 구할 수 있습니다. 질의에서 이 함수를 사용 할 수 있고 QueryDef 개체의 SQL 속성에서 계산식을 사용할 수 있으며 SQL 질의를 원본으로 하는 Recordset을 작성할 때도 사용할 수 있습니다.
|
계산 함수 합계를 구하는 데 사용하는 Sum, Count, Avg, Var 등의 함수입니다. 식을 쓰거나 프로그래밍을 할 때 앞의 네 함수를 포함한 SQL 계산 함수나 도메인 계산 함수를 사용하여 다양한 통계값을 구할 수 있습니다. QueryDef 도움말 파일 참조 (vb5.hlp 파일내의 SQL 계산함수 참조) SQL 도움말 파일 참조 Recordset 도움말 파일 참조 |
|
|
Avg 함수
Count 함수
Min, Max 함수
StDev, StDevP 함수
Sum 함수
Var, VarP 함수
■■■■■■■■■■■
1. Avg 함수
의에서 지정 필드에 있는 값의 산술 평균을 구합니다.
구문 Avg(expr)
expr는 평균을 구할 숫자 데이터가 있는 필드를 알려주는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다. expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할 수 없음) 등을 포함할 수 있습니다.
참고
Avg 함수로 계산한 평균은 수학적인 평균입니다.(즉, 합계를 값의 개수로 나눈 값입니다). 예를 들어, Avg 함수를 사용하여 평균 운송비를 계산할 수 있습니다. Avg 함수는 계산 시 Null 필드를 제외합니다.
Avg 함수는 질의 식 및 QueryDef 개체의 SQL 속성에 또는 SQL 질의를 원본으로 하는 Recordset 개체를 작성할 때 사용할 수 있습니다.
Avg 함수 예제
다음 예제는 Orders 테이블을 사용하여 수송료가 $100가 넘는 주문에 대해 평균 수송료를 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub AvgX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 수송료가 $100가 넘는 주문에 대한 평균 수송료를 계산합니다.
Set rst = dbs.OpenRecordset("SELECT Avg(Freight)" & " AS [Average Freight]" _
& " FROM Orders WHERE Freight > 100;")
rst.MoveLast ' Recordset을 만듭니다.
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
EnumFields rst, 25 ' Recordset 개체와 원하는 필드 너비를 전달합니다.
dbs.Close
End Sub
2. Count 함수
질의가 반환하는 레코드 수를 계산합니다.
구문 Count(expr)
expr는 개수를 셀 데이터가 있는 필드를 나타내는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다. expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할 수 없음) 등을 포함할 수 있습니다. 텍스트를 포함한 모든 형식의 데이터를 셀 수 있습니다.
참고 Count 함수를 사용하여 원본으로 사용하는 질의의 레코드 수를 셀 수 있습니다. 예를 들어, Count 함수를 사용하여 특정 국가로 운송할 주문서의 수를 셀 수 있습니다.
expr은 필드에서 계산을 수행하지만 Count 함수는 단순히 레코드 수만 셉니다. 레코드에 저장된 값과는 무관합니다.
Count 함수는 expr에 별표(*) 대표 문자를 사용한 경우에만 Null 필드가 있는 레코드 수를 계산합니다. 별표를 사용하면 Count 함수는 Null 필드가 있는 레코드를 포함한 전체 레코드 수를 계산합니다. Count(*) 함수는 Count([Column Name]) 함수에 비해 수행 속도가 훨씬 빠릅니다. 별표를 작은 따옴표(' ') 안에 사용하지 마십시오.
다음 예제는 Orders 테이블의 레코드 수를 계산합니다.
SELECT Count(*)
AS TotalOrders FROM Orders;
expr가 여러 필드를 확인하면, Count 함수는 적어도 하나의 필드가 Null이 아닐 경우에만 레코드를 셉니다. 지정한 필드가 모두 Null일 경우 레코드를 세지 않습니다. 필드 이름은 & 기호로 구분합니다. 다음 예제는 ShippedDate 또는 Freight가 Null이 아닌 레코드만을 세도록 제한 하는 방법을 보여 줍니다.
SELECT
Count('ShippedDate & Freight')
AS [Not Null] FROM Orders;
질의 식에 Count를 사용할 수 있습니다. QueryDef 개체의 SQL 속성에 또는 SQL 질의를 원본으로 하는 Recordset 개체를 작성할 때 이 식을 사용할 수 있습니다.
Count 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적된 주문수를 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub CountX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 영국으로 선적된 주문 수를 계산합니다.
Set rst = dbs.OpenRecordset("SELECT" & " Count (ShipCountry)" _
& " AS [
rst.MoveLast ' Recordset을 만듭니다.
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 25
dbs.Close
End Sub
3. Min, Max 함수
질의의 지정된 필드에 있는 값 중 최소값이나 최대값을 반환합니다.
구문 Min(expr)
Max(expr)
expr는 사용할 데이터가 있는 필드를 나타내는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다. expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할 수 없음) 등을 포함할 수 있습니다.
참고 Min 및 Max를 사용하여 계산 또는 그룹화 된 필드의 최소값과 최대값을 구할 수 있습니다. 예를 들어, 이 함수를 사용하여 최저 운임과 최대 운임을 계산할 수 있습니다. 지정한 그룹이 없으면 전체 테이블을 사용합니다.
QueryDef 개체의 SQL 속성과 질의 식에 또는 SQL 질의를 원본으로 하는 Recordset 개체를 작성할 때 Min과 Max 함수를 사용할 수 있습니다.
Min, Max 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적되는 주문에 대해 최저 수송료와 최고 수송료를 반환합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub MinMaxX()
Dim dbs As Database, rst As Recordset
' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
Set dbs = OpenDatabase("Northwind.mdb")
' 영국으로 선적되는 주문에 대해 최저 수송료와
' 최고 수송료를 반환합니다.
Set rst = dbs.OpenRecordset("SELECT " & "Min(Freight) AS [Low Freight], " _
& "Max(Freight)AS [High Freight] " & "FROM Orders WHERE ShipCountry = '
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 12
dbs.Close
End Sub
4. StDev, StDevP 함수
질의의 특정 필드에 포함된 값으로 모집단이나 모집단 표본에 대한 표준 편차의 결과를 반환합니다.
구문 StDev(expr)
StDevP(expr)
expr는 사용할 데이터가 있는 필드를 나타내는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다. expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할 수 없음) 등을 포함할 수 있습니다.
참고
StDevP 함수는 모집단을 구하고 StDev 함수는 모집단 표본을 구합니다.
원본으로 사용하는 질의에 두 개 미만의 레코드가 있으면(또는 StDevP 함수의 경우, 레코드가 없을 때) Null 값을 반환합니다. 이는 표준 편차를 계산할 수 없음을 뜻합니다.
StDev와 StDevP 함수를 질의 식에 사용할 수 있습니다. QueryDef 개체의 SQL 속성에 또는 SQL 질의를 원본으로 하는 Recordset 개체를 작성할 때 이 식을 사용할 수 있습니다.
StDev, StDevP 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적되는 주문에 대한 수송료의 표준 편차를 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub StDevX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 영구으로 선적되는 주문에 대한 수송료의 표준 편차를 계산합니다.
Set rst = dbs.OpenRecordset("SELECT " & "StDev(Freight) " _
& "AS [Freight Deviation] FROM Orders " & "WHERE ShipCountry = '
' Populate the Recordset.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 15
Debug.Print
Set rst = dbs.OpenRecordset("SELECT " & "StDevP(Freight) " _
& "AS [Freight DevP] FROM Orders " & "WHERE ShipCountry = '
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 15
dbs.Close
End Sub
5. Sum 함수
질의에서 지정 필드에 있는 일련의 값의 합계를 반환합니다.
구문 Sum(expr)
expr는 사용할 데이터가 있는 필드를 나타내는 문자열 식 또는 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다. expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할 수 없음) 등을 포함할 수 있습니다.
참고
Sum 함수는 필드에 있는 값의 합계를 구합니다. 예를 들어, Sum 함수를 사용하여 총 운송 비용을 구할 수 있습니다.
Sum 함수는 Null 필드가 있는 레코드를 무시합니다.
다음 예제는 UnitPrice와 Quantity 필드의 합계를 구하는 방법을 보여 줍니다.
SELECT
Sum(UnitPrice * Quantity)
AS [Total Revenue] FROM [Order Details];
Sum 함수를 질의 식에 사용할 수 있습니다. QueryDef 개체의 SQL 속성에 또는 SQL 질의에서 Recordset 개체를 작성할 때 이 식을 사용할 수 있습니다.
Sum 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적되는 주문에 대한 총 판매량을 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub SumX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 영국으로 선적되는 주문에 대한 총 판매량을 계산합니다.
Set rst = dbs.OpenRecordset("SELECT" & " Sum(UnitPrice*Quantity)" _
& " AS [Total
& " Orders.OrderID = [Order Details].OrderID" & " WHERE (ShipCountry = '
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 15
dbs.Close
End Sub
6. Var, VarP 함수
질의의 지정 필드에 포함된 일련의 값으로 모집단이나 모집단 표본에 대한 분산 결과를 반환합니다.
구문 Var(expr)
VarP(expr)
expr는 사용할 데이터가 있는 필드를 나타내는 문자열 식이나 그 필드의 데이터를 사용하여 계산을 수행하는 식을 나타냅니다. expr의 피연산자는 테이블 필드의 이름, 상수, 함수(고유 함수나 사용자 정의 함수는 가능하지만 다른 SQL 계산 함수는 사용할 수 없음) 등을 포함할 수 있습니다.
참고
VarP 함수는 모집단을 계산하고 Var 함수는 모집단 표본을 계산합니다.
원본 질의에 두 개 미만의 레코드가 있을 때 Var 및 VarP 함수는 Nulldadefnull@JetDef35.hlp을 반환합니다. 이는 분산을 계산할 수 없음을 뜻합니다. 질의 식이나 SQL 문에 Var와 VarP 함수를 사용할 수 있습니다.
Var, VarP 함수 예제
다음 예제는 Orders 테이블을 사용하여 영국으로 선적되는 주문에 대한 수송료의 분산를 계산합니다.
다음 예제는 SELECT 문 예제에서처럼 EnumFields 프로시저를 호출합니다.
Sub VarX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb") ' 사용자 컴퓨터의 Northwind경로를 나타내도록 다음 행을 수정하십시오.
' 영국으로 선적되는 주문에 대한 수송료의 분산을 계산합니다.
Set rst = dbs.OpenRecordset("SELECT " & "Var(Freight) " _
& "AS [
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 20
Debug.Print
Set rst = dbs.OpenRecordset("SELECT " & "VarP(Freight) " _
& "AS [
' Recordset을 만듭니다.
rst.MoveLast
' EnumFields를 호출하여 Recordset의 내용을 출력합니다.
' Recordset 개체와 원하는 필드 너비를 전달합니다.
EnumFields rst, 20
dbs.Close
End Sub