ページの先頭行へ戻る
Big Data Integration ServerV1.4.0 検索編アプリケーション開発ガイド
FUJITSU Software

B.4.4 集計を行う場合のリターン式指定例

以下にリターン式の例を示します。


文書A
<doc>
  <companyname>fujitsu</companyname>
  <employee position="manager">
    <name>tanaka</name>
    <id>2000</id>
    <age>30才</age>
    <comment></comment>
  </employee>
</doc>

文書B
<doc>
  <companyname>fujitsu</companyname>
  <employee position="chief">
    <name>suzuki</name>
    <id>1000</id>
    <age>35才</age>
    <comment>team leader</comment>
  </employee>
</doc>

例1 avg関数の例

リターン式

avg(/doc/employee/age/text())

ソート式

/doc/companyname/text()

結果

32.5

例2 count関数に属性式を指定した例

リターン式

count(/doc/employee/@position)

ソート式

/doc/employee/text()

結果

2

複数のリターン項目を指定した場合は、結果として返す各リターン項目の値が区切り文字で区切られます。


例3 複数のリターン項目を指定した場合の例

リターン式

avg(/doc/employee/age/text()),count(/doc/employee/name/text())

ソート式

/doc/companyname/text()

結果

32.5,2

注意

テキスト式で指定したテキストノードまたは属性式で指定した属性ノードが同一文書中に複数存在する場合は、先頭のテキストノードの値または属性ノードの値を利用します。

以下の場合、avg関数の引数“/student/subject/test/score/text()”の値は、文書Aは集計の対象外、文書Bは80、文書Cは0として扱います。

文書A

<student>
  <name>tanaka</name>
  <subject>
    <subjectname>science</subjectname>
  </subject>
  <name>tanaka</name>
</student>

文書B

<student>
  <name>suzuki</name>
  <subject>
    <subjectname>science</subjectname>
    <test>
      <date>2006年01月12日</date>
      <score>80</score>
</test> <test> <date>2005年12月08日</date> <score>70</score> </test> </subject> </student>

文書C

<student>
  <name>satou</name>
  <subject>
    <subjectname>science</subjectname>
    <test>
      <date>2006年01月12日</date>
      <score>--</score>
    </test>
  </subject>
</student>

リターン式

avg(/student/subject/test/score/text())

ソート式

/student/subject/subjectname/text()

結果

40