(: -------------------------------------------------------------------------- :) (: 1 :) //flight [@date = "2019-10-18"] [line = //line[arrival/airport/@country = "DEU"]/@number] let $a := //flight[@date = "2019-10-18"][line = //line[arrival/airport/@country = "DEU"]/@number] return $a let $a := //line[arrival/airport/@country = "DEU"]/@number return //flight[@date = "2019-10-18"][line = $a] let $a := //line[arrival/airport/@country = "DEU"]/@number for $f in //flight[@date = "2019-10-18"][line = $a] return $f let $a := //line[arrival/airport/@country = "DEU"]/@number for $f in //flight where ($f/@date = "2019-10-18") and ($f/line = $a) return $f for $f in /airport/flights/flight let $country := /airport/lines/line[@number = $f/line]/arrival/airport/@country where ($f/@date = "2019-10-18") and ($country = "DEU") return $f (: -------------------------------------------------------------------------- :) (: 2A :) for $n in /airport/lines/line where $n/duration > 60 return { data($n/@number) } { data($n/departure/time) } { data($n/arrival/time) } ... ...{ $n/departure/time/text() } ...{ $n/arrival/time/text() } for $n in /airport/lines/line[duration > 60] ... (: INCORRECT :) ... { $n/@number } ... { $n/departure/time } (: -------------------------------------------------------------------------- :) (: 2B :) ... return element line { attribute origin { $n/departure/airport/@code }, attribute destination { $n/arrival/airport/@code }, element code { data($n/@number) }, element departure { data($n/departure/time) }, element arrival { data($n/arrival/time) } } (: -------------------------------------------------------------------------- :) (: 3 :) for $a in distinct-values(//airline) let $n := //line[airline = $a]/@number where every $f in //flight[line = $n] satisfies $f/aircraft return $a for $a in distinct-values(//airline) let $n := //line[airline = $a]/@number where every $l in $n satisfies every $f in //flight[line = $l] satisfies $f/aircraft return $a for $a in distinct-values(//airline) let $n := //line[airline = $a]/@number where count(//flight[line = $n]) = count(//flight[line = $n][aircraft]) return $a (: -------------------------------------------------------------------------- :) (: 4 :) { let $n := //line[departure/airport/@code = "PRG"]/@number for $f in //flight[line = $n] let $t := //line[@number = $f/line]/departure/time/text() order by $f/@date descending, $t ascending return }
DateTimeNumberAircraft
{ data($f/@date) } { $t } { $f/line/text() } { if ($f/aircraft) then data($f/aircraft/@registration) else Unknown }
(: -------------------------------------------------------------------------- :) (: 5 :) let $c := for $f in //flight[line = "EK140"] return count($f/tickets/ticket) let $a := avg($c) for $f in //flight[line = "EK140"] where count($f/tickets/ticket) >= $a return { string-join($f/tickets/ticket/text(), ", ") } ... return { $f/@date } ... let $p := for $f in //flight[line = "EK140"] return { string-join($f/tickets/ticket/text(), ", ") } let $a := avg($p/@tickets) return $p[@tickets >= $a] (: -------------------------------------------------------------------------- :)