Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 -
目次 索引 前ページ次ページ

第2部 APIでのアプリケーション開発> 第11章 C APIのアプリケーション開発> 11.2 C APIの使用方法> 11.2.2 データの検索

11.2.2.8 条件に一致するデータの内容を集計する

検索した結果をある特定の要素の値で集計して取得したい場合があります。

データの内容を集計するには、ShunSearch関数を利用します。ShunSearch関数の引数であるリターン式に集合関数指定を指定すると、検索した結果が集計されて返却されます。集計処理では、合計値、平均値、最大値、最小値または件数を求めることができます。

条件に一致するデータの内容を集計する場合の流れについて、以下の図に示します。

[図:条件に一致するデータの内容を集計する場合の流れ]

■記述例

SHUNHSTMT StmtH;
/* データ操作ハンドルの割当て */
ShunAllocHandle(ConH, &StmtH);                               (1)

/* 集計を実行 */
ShunSearch(StmtH, 1, NULL, 0, 30,
           "/document/base/prefecture == '大阪'", 
           "max(/document/base/price/text())",
           "/document/base/prefecture/text()",
           &Hit_Cnt, &Return_Cnt, &Returnable_Cnt,
           &Rec_Id_Out, &Data,
           &First_Pos, &Last_Pos);                           (2)

/* 集計した結果の取出し */
printf("ヒット件数              = %d\n", Hit_Cnt);            (3)
if(Hit_Cnt > 0) {
  for (i = 0; i < Return_Cnt; i++) {
    printf("[結果]%d件目 = %s\n", i+1, Data[i].Data);
  }
}

/* データ操作ハンドルの解放 */
ShunFreeHandle(StmtH);                                       (4)

◆(1) データ操作ハンドルの割当て

事前にデータ操作ハンドルを割り当てます。データ操作ハンドルは、ShunAllocHandle関数に、親ハンドルとなるコネクションハンドルを指定して割り当てます。

◆(2) 集計の実行

ShunSearch関数のパラメタに、データ操作ハンドル、データの取得位置(取得開始位置または取得終了位置)、データの最大件数、検索式およびリターン式を指定して検索を実行します。リターン式には集合関数指定を指定します。

ソート式に指定したキーの長さによって返却できるグループの数が決まります。最大グループ数は1000グループです。データの取得位置やデータの最大件数に返却可能な最大グループ数を超える値を指定しても、それ以上のデータは返却することができません。
返却可能なデータの最大件数は、ShunSearch関数の出力パラメタに返却されます。キーの長さと返却可能なグループ件数の目安については、“付録C 定量値”を参照してください。

データの取得位置を指定することにより、続きのデータを取り出すことができます。これにより1000グループ以上のデータを取り出すことができます。詳細については、“11.2.2.7 条件に一致するXML文書を連続して取得する”を参照してください。

◆(3) 集計した結果の取出し

ShunSearch関数では、集計した結果のアドレスを返却します。

集計した結果は、構造体の配列で構成されていますので、これをもとにデータを取り出します。

◆(4) データ操作ハンドルの解放

データの検索および結果の取出しが完了したら、ShunFreeHandle関数でデータ操作ハンドルを解放します。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006