XQuery 3.0: Gruppierungen mit group by

In XQuery 3.0 sind mit group by auch Gruppierungen möglich.

Analog zu xsl:for-each-group können Sie auch in XQuery einen Gruppierungsschlüssel individuell zusammenstellen.


xquery version "3.0";
<ergebnis>
  {
    for $m in //Mensch
    let $gehalt := xs:decimal($m/Gehalt/text())
    let $status := if ($gehalt > 5000 ) 
                   then ('reich') 
                   else if ($gehalt <= 5000 and $gehalt > 1000 ) 
                   then ('wohlhabend') 
                   else ('normal')    
    group by $status
    return
      <Kunde status="{$status}">
        {
          for $kk in $m
          order by $kk/Gehalt/text() descending
          return
          <k NN="{$kk/name/text()}" 
             VN="{$kk/vorname/text()}"
             EK="{$kk/Gehalt/text()}" 
             WO="{$kk/../name/text()}"/>            
        }
      </Kunde>
  }
</ergebnis>

Das Ergebnis können Sie hier sehen:

 <ergebnis> <Kunde status="normal"> ...

Get XML -- Technologien, Grundlagen, Validierung, Auswertung now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.