Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 - |
目次
索引
![]() ![]() |
第1部 アプリケーション開発の基本 | > 第3章 データを検索する方法 | > 3.7 集計した結果を取り出す |
集計を行う場合、グループキーも同時に取り出すのが一般的です。リターン式には、集合関数指定と、ソート式で指定したキー指定が指定できます。各リターン項目は“,”で区切ります。複数のリターン項目を指定した場合は、結果として返す各リターン項目の値が区切り文字で区切られます。
例として、検索式により以下の6件のXML文書がヒットしたものとして説明します。
文書A
<doc> : <basic date="2006年11月3日" expense="15500円"> : </basic> <detail> <destination area="神奈川県横浜市港北区">本社</destination> : <train>8600円</train><taxi></taxi><hotel>6900円</hotel> : </detail> : </doc> |
文書B
<doc> : <basic date="2006年10月11日" expense="1000円"> : </basic> <detail> <destination area="神奈川県横浜市港北区">本社</destination> : <train>900円</train><taxi></taxi><hotel></hotel> : </detail> : </doc> |
文書C
<doc> : <basic date="2006年11月25日" expense="21000円"> : </basic> <detail> <destination area="神奈川県横浜市港北区">本社</destination> : <train>13000円</train><taxi></taxi><hotel>8000円</hotel> : </detail> : </doc> |
文書D
<doc> : <basic date="2006年9月29日" expense="4200円"> : </basic> <detail> <destination area="東京都千代田区">東京営業所</destination> : <train>1600円</train><taxi>600円</taxi><hotel></hotel> : </detail> : </doc> |
文書E
<doc> : <basic date="2006年11月12日" expense="1300円"> : </basic> <detail> <destination area="東京都千代田区">東京営業所</destination> : <train>400円</train><taxi>900円</taxi><hotel></hotel> : </detail> : </doc> |
文書F
<doc> : <basic date="2006年10月30日" expense="9500円"> : </basic> <detail> <destination area="東京都千代田区">東京営業所</destination> : <train>280円</train><taxi>680円</taxi><hotel>8500円</hotel> : </detail> : </doc> |
以降の例の共通事項として、次のソート式が指定されているものとします。
ソート式 : /doc/detail/destination/@area |
集計を行う場合のソート式は、グループ化するキーを指定しますが、指定したキーでソートも行います。集計のためのソート式にも、“DESC”が指定できます。“DESC”を指定すると、グループ化キーの大きいものから集計結果を取り出すことができます。
以下は、文字コード“UTF-8”を使用した場合の結果例です。
例1
交通費(train)の平均を求めます。
リターン式 : /doc/detail/destination/@area,avg(/doc/detail/train/text())結果:Java APIの場合
本社,7500 東京営業所,760
例2
タクシーの利用者数を数えます。
リターン式 :/doc/detail/destination/@area,count(/doc/detail/taxi/text())結果:Java APIの場合
神奈川県横浜市港北区,0 東京都千代田区,3
集合関数の引数となるテキスト式が示す値がない場合は、集計の対象に含めません。上記の例では、本社に出張した人は誰もタクシーを利用していません。このため、countの結果は0になります。taxi要素ノードに“0”という値を格納している場合は、集計の対象になります。このようなデータを格納している場合は、検索式にタクシー料金が0より大きいという条件を指定して、検索の対象から除外することで集計の対象から除外できます。
例3
タクシー料金(taxi)の最大値と宿泊費(hotel)の合計、および出張回数を求めます。
リターン式 : /doc/detail/destination/@area,max(/doc/detail/taxi/text()),sum(/doc/detail/hotel/text()),count(/doc/detail/destination/text())結果:Java APIの場合
本社,,14900,3 東京営業所,900,8500,3
集合関数の引数となるテキスト式が示す値がない場合は、集計の対象に含めません。上記の例では、本社に出張した人は誰もタクシーを利用していません。このため、最大の値がありません。
目次
索引
![]() ![]() |