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

付録B 検索式、リターン式およびソート式の書式> B.4 リターン式

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

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

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