Skip to content

Instantly share code, notes, and snippets.

@xquery
Created May 9, 2013 17:36
Show Gist options
  • Save xquery/5549109 to your computer and use it in GitHub Desktop.
Save xquery/5549109 to your computer and use it in GitHub Desktop.
MarkLogic XQuery - averaging data with same keys across multiple maps, returning ordered map
xquery version "1.0-ml";
declare option xdmp:mapping "true";
let $map1:= map:map()
let $_ := map:put($map1,'a',xs:float(1.0))
let $_ := map:put($map1,'b',xs:float(1.0))
let $_ := map:put($map1,'c',xs:float(1.0))
let $_ := map:put($map1,'d',xs:float(1.0))
let $_ := map:put($map1,'e',xs:float(1.0))
let $_ := map:put($map1,'f',xs:float(2))
let $map2:= map:map()
let $_ := map:put($map2,'a',xs:float(2))
let $_ := map:put($map2,'b',xs:float(2))
let $_ := map:put($map2,'c',xs:float(2))
let $_ := map:put($map2,'d',xs:float(2))
let $_ := map:put($map2,'e',xs:float(2))
let $_ := map:put($map2,'f',xs:float(1))
let $allmaps := ($map1,$map2)
let $data-map := json:object-define(for $d in distinct-values(map:keys($allmaps)) order by $d return $d)
let $_ := distinct-values(map:keys($allmaps)) ! map:put($data-map, ., avg(map:get($allmaps,.)))
return $data-map
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment