레코드 집합: 합계 및 다른 집계 결과 구하기(ODBC)
참고 항목
Visual Studio 2019 이상에서는 MFC ODBC 소비자 마법사를 사용할 수 없습니다. 여전히 수동으로 소비자를 만들 수 있습니다.
이 항목은 MFC ODBC 클래스에 적용됩니다.
이 항목에서는 다음 SQL 키워드를 사용하여 집계 결과를 얻는 방법을 설명합니다.
SUM 숫자 데이터 형식을 사용하여 열에 있는 값의 합계를 계산합니다.
MIN 숫자 데이터 형식을 사용하여 열에서 가장 작은 값을 추출합니다.
MAX 숫자 데이터 형식을 사용하여 열에서 가장 큰 값을 추출합니다.
AVG 숫자 데이터 형식을 사용하여 열에 있는 모든 값의 평균값을 계산합니다.
COUNT 모든 데이터 형식의 열에 있는 레코드의 수를 계산합니다.
이러한 SQL 함수를 사용하여 데이터 원본에서 레코드를 추출하는 대신 데이터 원본의 레코드에 대한 통계 정보를 가져옵니다. 일반적으로 만든 레코드 집합은 값을 포함하는 단일 레코드(모든 열이 집계된 경우)로 구성됩니다. (GROUP BY 절을 사용하면 둘 이상의 레코드가 있을 수 있습니다.) 이 값은 SQL 함수에 의해 수행된 계산 또는 추출의 결과입니다.
팁
SQL GROUP BY 절(및 가능하면 HAVING 절)을 SQL 문에 추가하려면 m_strFilter
의 끝에 추가합니다. 예시:
m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";
열을 필터링하고 정렬하여 집계 결과를 얻는 데 사용하는 레코드 수를 제한할 수 있습니다.
주의
일부 집계 연산자는 집계하는 열에서 다른 데이터 형식을 반환합니다.
SUM 및 AVG는 다음으로 큰 데이터 형식을 반환할 수 있습니다(예:
int
로 호출하면 LONG 또는double
을 반환함).COUNT는 일반적으로 대상 열 유형에 관계없이 LONG을 반환합니다.
MAX 및 MIN은 계산하는 열과 동일한 데이터 형식을 반환합니다.
예를 들어 클래스 추가 마법사는 Sales 열을 수용할 수 있도록
long
m_lSales
를 만들지만 집계 결과를 수용하려면 이를double m_dblSumSales
데이터 멤버로 바꿔야 합니다. 다음 예를 참조하세요.
레코드 집합에 대한 집계 결과를 가져오려면
집계 결과를 가져올 열이 포함된 MFC ODBC 소비자 추가에서 설명된 대로 레코드 집합을 만듭니다.
레코드 집합에 대한 DoFieldExchange 함수를 수정합니다. 열 이름을 나타내는 문자열(RFX 함수 호출의 두 번째 인수)을 열의 집계 함수를 나타내는 문자열로 바꿉니다. 예를 들어 다음을 바꿉니다.
RFX_Long(pFX, "Sales", m_lSales);
다음으로 바꿉니다.
RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
레코드 집합을 엽니다. 집계 작업의 결과는
m_dblSumSales
에 남아 있습니다.
참고 항목
마법사는 실제로 헝가리어 접두사 없이 데이터 멤버 이름을 할당합니다. 예를 들어 마법사는 앞에 그림에 사용된 m_lSales
이름 대신 Sales 열에 대해 m_Sales
를 생성합니다.
CRecordView 클래스를 사용하여 데이터를 보는 경우 새 데이터 멤버 값을 표시하도록 DDX 함수 호출을 변경해야 합니다. 이 경우 다음에서 변경합니다.
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);
다음으로 변경:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);