Zestaw rekordów: uzyskiwanie sum i innych wyników agregacji (ODBC)
Ten temat dotyczy klas MFC ODBC.
W tym temacie wyjaśniono sposób uzyskiwania agregacji wyników, używając poniższego skryptu SQL słowa kluczowe:
Suma oblicza sumę wartości w kolumnie Typ danych numerycznych.
MIN wyodrębnia najmniejszą wartość w kolumnie o typie danych liczbowych.
MAX wyodrębnia największą wartość w kolumnie o typie danych liczbowych.
AVG oblicza wartość średnią wszystkich wartości w kolumnie Typ danych numerycznych.
Liczba zlicza rekordy w wybranej kolumnie dowolnego typu danych.
Korzystania z tych funkcji SQL do uzyskania informacji statystycznych na temat rekordów w źródle danych, a nie do wyodrębnienia rekordy ze źródła danych.Zestaw rekordów, który jest tworzony zazwyczaj składa się z pojedynczego rekordu (Jeśli wszystkie kolumny są agregatów), który zawiera wartość. (Może być więcej niż jeden rekord, jeśli użyto GROUP BY klauzula.) Ta wartość jest wynikiem obliczenia lub ekstrakcji wykonywane przez funkcję SQL.
![]() |
---|
Aby dodać SQL GROUP BY klauzula (i ewentualnie HAVING klauzuli) do instrukcji SQL, należy dołączyć ją do końca m_strFilter.Na przykład: |
m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";
Można ograniczyć liczbę rekordów, które umożliwia uzyskanie agregacji wyników przez filtrowanie i sortowanie kolumn.
![]() |
---|
Niektórzy operatorzy agregacji powrócić na inny typ danych z kolumn, nad którymi są agregowania. |
Suma i AVG może zwrócić następny większy typ danych (na przykład wywołanie z int zwraca DŁUGI lub Podwójna).
Liczba zwykle zwraca DŁUGI niezależnie od typu kolumny docelowej.
MAX i MIN zwracać taki sam typ danych w kolumnach obliczeń.
Na przykład Add Class Kreator tworzy longm_lSales aby pomieścić kolumny Sprzedaż, ale trzeba zastąpić ten z double m_dblSumSales członka danych, aby pomieścić wynikiem agregacji. Zobacz przykład poniżej.
Aby uzyskać wynik agregacji dla zestawu rekordów
Utwórz zestaw rekordów w sposób opisany w dodanie odbiorca ODBC MFC zawierające kolumny, z których mają być pobierane agregacji wyników.
Modyfikowanie DoFieldExchange funkcji zestawu rekordów.Zastąp ciąg reprezentującą nazwę kolumny (drugi argument RFX funkcja wywołania) z ciągiem reprezentującym funkcję agregacji w kolumnie.Na przykład zamienić:
RFX_Long(pFX, "Sales", m_lSales);
z:
RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
Otwórz zestaw rekordów.Wynik operacji agregacji pozostanie w m_dblSumSales.
[!UWAGA]
Kreator przypisuje faktycznie nazwy składników danych bez prefiksów węgierskiego.Na przykład, wyprodukuje kreatora m_Sales dla kolumny Sprzedaż, a nie m_lSales nazwa używana wcześniej dla celów ilustracyjnych.
Jeśli używasz CRecordView klasy do wyświetlania danych, trzeba zmienić wywołania funkcji DDX, aby wyświetlić wartość nowy członek danych; w takim przypadku zmiana go od:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);
Aby:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);
Zobacz też
Koncepcje
Zestaw rekordów: jak zestawy rekordów pobierają rekordy (ODBC)