Udostępnij za pośrednictwem


Zestaw rekordów: uzyskiwanie sum i innych wyników agregacji (ODBC)

Uwaga

Kreator klienta MFC ODBC nie jest dostępny w programie Visual Studio 2019 i nowszych wersjach. Nadal można ręcznie utworzyć użytkownika.

Ten temat dotyczy klas MFC ODBC.

W tym temacie opisano sposób uzyskiwania zagregowanych wyników przy użyciu następujących słów kluczowych SQL :

  • FUNKCJA SUM oblicza sumę wartości w kolumnie z typem danych liczbowych.

  • FUNKCJA MIN wyodrębnia najmniejszą wartość w kolumnie z typem danych liczbowych.

  • FUNKCJA MAX wyodrębnia największą wartość w kolumnie z typem danych liczbowych.

  • AVG oblicza średnią wartość wszystkich wartości w kolumnie z typem danych liczbowych.

  • COUNT zlicza liczbę rekordów w kolumnie dowolnego typu danych.

Te funkcje SQL służą do uzyskiwania informacji statystycznych dotyczących rekordów w źródle danych, a nie wyodrębniania rekordów ze źródła danych. Utworzony zestaw rekordów zwykle składa się z jednego rekordu (jeśli wszystkie kolumny są agregowane), który zawiera wartość. (Jeśli użyto rekordu , może istnieć więcej niż jeden rekordGROUP BY , klauzula.) Ta wartość jest wynikiem obliczeń lub wyodrębniania wykonywanych przez funkcję SQL.

Napiwek

Aby dodać klauzulę SQL GROUP BY (i ewentualnie klauzulę HAVING ) do instrukcji SQL, dołącz ją na końcu m_strFilter. Na przykład:

m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";

Liczbę rekordów używanych do uzyskiwania zagregowanych wyników można ograniczyć, filtrując i sortując kolumny.

Uwaga

Niektóre operatory agregacji zwracają inny typ danych od kolumn, dla których są agregowane.

  • Funkcja SUM i AVG mogą zwracać następny większy typ danych (na przykład wywołanie funkcji z zwracanymi wartościami int LONG lub double).

  • Funkcja COUNT zwykle zwraca wartość LONG niezależnie od typu kolumny docelowej.

  • Funkcja MAX i MIN zwracają ten sam typ danych co kolumny, które obliczają.

    Na przykład kreator Dodaj klasę tworzy long m_lSales w celu uwzględnienia kolumny Sales (Sprzedaż), ale należy zastąpić elementem double m_dblSumSales członkowskim danych, aby uwzględnić zagregowany wynik. Zobacz poniższy przykład.

Aby uzyskać zagregowany wynik dla zestawu rekordów

  1. Utwórz zestaw rekordów zgodnie z opisem w temacie Dodawanie odbiorcy MFC ODBC zawierającego kolumny, z których chcesz uzyskać zagregowane wyniki.

  2. Zmodyfikuj funkcję DoFieldExchange dla zestawu rekordów. Zastąp ciąg reprezentujący nazwę kolumny (drugi argument wywołań funkcji RFX ) ciągiem reprezentującym funkcję agregacji w kolumnie. Na przykład zastąp:

    RFX_Long(pFX, "Sales", m_lSales);
    

    tym:

    RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
    
  3. Otwórz zestaw rekordów. Wynik operacji agregacji jest pozostawiony w pliku m_dblSumSales.

Uwaga

Kreator faktycznie przypisuje nazwy składowych danych bez węgierskich prefiksów. Na przykład kreator utworzy m_Sales kolumnę Sales zamiast m_lSales nazwy użytej wcześniej na ilustracji.

Jeśli używasz klasy CRecordView do wyświetlania danych, musisz zmienić wywołanie funkcji DDX, aby wyświetlić nową wartość składową danych; w tym przypadku zmiana jej z:

DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);

Do:

DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);

Zobacz też

Zestaw rekordów (ODBC)
Zestaw rekordów: jak zestawy rekordów pobierają rekordy (ODBC)