Hi,
I'm trying to find the best way to return the results of what would be the
following equivalent sql statement:
select count(*) from Data
where Audit_Date > "2010-01-01" and Audit_Date < "2011-01-01" and
(Classification = "Finding" or Classification = "Observation")
group by Site, Department, LOB
I didn't test this sql statement, but it should give you the idea... Anyway, I
came up with the following xquery equivalent:
for $s in distinct-values(/Data/Site)
return
for $d in distinct-values(/Data/Department)
return
for $lob in distinct-values(/Data/LOB)
return concat($s,'|',$d,'|',$lob,'|',
count(
for $x in (/Data[Site=$s and Department=$d and LOB=$lob and
(Classification='Finding' or Classification='Observation')])
let $date as xs:dateTime := $x/Audit_Date
where $date gt xs:dateTime("2010-01-01T00:00:00")
and $date lt xs:dateTime("2011-01-01T00:00:00")
return ($x)
)
)
It works fine and is not super-slow, but isn't particularly fast either. Is
this the most efficient way to get this type of information out of marklogic?
Assuming the fields are indexed, would some search command be faster? Or maybe
subset the data better?
Thanks,
Mark
_______________________________________________
General mailing list
[email protected]
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general