ページの先頭行へ戻る
Interstage Shunsaku Data Manager アプリケーション開発ガイド
Interstage

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

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

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

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


図K.11 条件に一致するデータの内容を集計する場合の流れ


記述例

この処理を実現させるためには、自動生成されたShunsakuアクセスクラスのリターン式に集合関数を指定します。以下に、リターン式に集合関数を指定したShunsakuアクセスクラスとビジネスクラスの記述例を示します。


ビジネスクラス

ShunConnection con = new ShunConnection();

ShunsakuAccessController controller = new ShunsakuAccessController(con);
controller.search(key);
ShunResultSet resultData = controller.getResultSet(ShunsakuAccessController.SORT_1);
controller.close();

con.close();

ShunPreparedStatementオブジェクト

public class ShunsakuAccessController {
    :
   private ShunPreparedStatement pstmt;
    :
}

Shunsakuアクセスクラスのsearchメソッド

public void search(String keys) throws ShunException {
    :
   queryString = "/document/base/prefecture ==  " + keys + "";                             (a)
returnString = "max(/document/base/price/text())"; (1)(b)
: getPreparedStatement(queryString, returnString); : } private void getPreparedStatement(String queryString, String returnString) { : pstmt = con.preparedSearch(queryString, returnString); (3)
: }

(a) 検索式

対話形式のウィザードで定義します。複雑な検索式も対話形式のウィザードで作成することができます。

(b) リターン式

集合関数を指定します。


ShunsakuアクセスクラスのgetResultDataメソッド

public Object[] getResultData(String sortString) throws ShunException {
    :
   resultSet = getResultSet(sortString);
    :
   resultData = parseResultSet(resultSet);                                                    (6)
: resultSet.close(); (7)
:
} public ShunResultSet getResultSet(String sortString) throws ShunException { return getResultSet(sortString, 1, Integer.MAX_VALUE); } public ShunResultSet getResultSet(String sortString, int position, int requestCount) throws ShunException { : if(!sortString.equals(SORT_NONE)) { pstmt.setSort(sortString); (4) } : return pstmt.executeSearch(); (5)
: }

ソート式

ソート式は、対話形式のウィザードで作成し、ソート識別子としてShunsakuアクセスクラスの定数として定義されます。

public class ShunsakuAccessController {
    :
   public static final String SORT_NONE = "";                                                (2)
public static final String SORT_1 = "val(/document/base/prefecture/text())"; (2)
: }

Shunsakuアクセスクラスのcloseメソッド

public void close() throws ShunException {
    :
   pstmt.close();                                                                            (7)
: }

(1) リターン式の作成

リターン式を作成します。集計を行う場合は、リターン式に集合関数指定を指定します。

リターン式および集合関数指定の詳細については、“B.4 リターン式”を参照してください。


(2) ソート式の作成

ソート式を作成します。

ソート式の詳細については、“B.5 ソート式”を参照してください。


(3) ShunPreparedStatementオブジェクトの作成

ShunPreparedStatementオブジェクトの作成は、検索式とリターン式を指定し、prepareSearchメソッドを使用します。

検索式およびリターン式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。


(4) ソート式の設定

ソート式の設定は、setSortメソッドを使用します。

注意

ソート式に指定したキーの長さによって返却できるグループの数が決まります。最大グループ数は1000グループです。返信開始番号や返信要求件数に返却可能な最大グループ数を超える値を指定しても、それ以上のデータは返却することができません。返却可能なデータの最大件数は、getReturnableCountメソッドで取得できます。

キーの長さと返却可能なグループ数の目安については、“付録C 定量値”を参照してください。

参考

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


(5) 検索の実行(ShunResultSetオブジェクトの作成)

検索の実行はexecuteSearchメソッドを使用します。検索した結果としてShunResultSetオブジェクトが作成されます。


(6) 検索した結果の取出し

parseResultSetメソッドのパラメタにShunResultSetオブジェクトを指定して、検索した結果を取り出します。


(7) ShunResultSetオブジェクトおよびShunPreparedStatementオブジェクトの解放

ShunResultSetオブジェクトとShunPreparedStatementオブジェクトは、使用後にそれぞれのcloseメソッドで必ず解放します。