Sada záznamů: Získávání součtů a jiných agregačních výsledků (ODBC)
Toto téma platí pro třídy knihovny MFC rozhraní ODBC.
Toto téma popisuje, jak získat agregované výsledky pomocí následujících klíčových slov jazyka SQL:
Funkce SUM vypočítá součet hodnot ve sloupci s číselným datovým typem.
Funkce MIN vypíše nejnižší hodnotu ve sloupci s číselným datovým typem.
Funkce MAX vypíše nejvyšší hodnotu ve sloupci s číselným datovým typem.
Funkce AVG vypočítá průměrnou hodnotu všech hodnot ve sloupci s číselným datovým typem.
Funkce COUNT spočítá počet záznamů ve sloupci jakéhokoliv datového typu.
Tyto funkce jazyka SQL se používají k získání statistických informací o záznamech ve zdroji dat, nikoli k extrahování záznamů ze zdroje dat.Sada záznamů, která je vytvořena, se obvykle skládá z jednoho záznamu (pokud jsou všechny sloupce agregovány), který obsahuje hodnotu. (Pokud použijete klauzuli GROUP BY, může zde být více než jeden záznam.) Tato hodnota je výsledkem výpočtu nebo výpisu prováděném funkcí jazyka SQL.
Tip
Chcete-li přidat klauzuli GROUP BY jazyka SQL (a případně klauzuli HAVING) to vašeho SQL dotazu, připojte ji na konec m_strFilter.Příklad:
m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";
Můžete omezit počet záznamů, které chcete získat výsledkem agregace, použitím filtrování a řazení sloupců.
Upozornění |
---|
Některé agregační operátory vrací jiný datový typ ze sloupců, které byly agregovány. |
Funkce SUM a AVG mohou vrátit následující větší datový typ (například volání funkce na datový typ int vrátí LONG nebo double).
Funkce COUNT obvykle vrátí LONG bez ohledu na typ cílového sloupce.
Funkce MAX a MIN vrátit stejný datový typ jako sloupce, jejich výpočtu.
Například průvodce Přidat třídu vytvoří long m_lSales pro přizpůsobení sloupce Sales. Budete ho muset ale nahradit datovým členem double m_dblSumSales k přizpůsobení výsledku agregace. Viz následující příklad.
Chcete-li získat agregační výsledek pro sadu záznamů
Vytvořte sadu záznamů postupem popsaným v tématu Přidání příjemce knihovny MFC rozhraní ODBC obsahující sloupce, ze kterých chcete získat agregované výsledky.
Upravte funkci DoFieldExchange sady záznamů.Nahrazení řetězce představujícím název sloupce (druhý argument volání funkce RFX) řetězcem představujícím agregační funkci sloupce.Například, nahrazení:
RFX_Long(pFX, "Sales", m_lSales);
tímto kódem:
RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
Otevřete sadu záznamů.Výsledek agregační operace je ponechán v m_dblSumSales.
[!POZNÁMKA]
Průvodce ve skutečnosti přiřadí názvy datových členů bez maďarských předpon.Například průvodce spíše vytvoří m_Sales pro sloupec Sales, než název m_lSales, používaný dříve pro ilustraci.
Pokud používáte třídu CRecordView k zobrazení dat, je nutné změnit volání funkce DDX pro zobrazí nové hodnoty datového člena; v takovém případě se to změní z:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);
Na:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);