2015-04-01 132 views
-2

我需要使用XQuery计算每个课程的平均值。使用XQuery计算平均值

这里的XML代码:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<?xml-stylesheet href="class.xsl" type="text/xsl" ?> 
<university> 
<student><sname>Charlie Parker</name> 
<course sigle="INF8430" note="69" /> 
<course sigle="INF1030" note="65" /> 
<course sigle="INF1230" note="73" /></student> 
<student><name>Miles Davis</name> 
<course sigle="INF8430" note="65" /> 
<course sigle="INF1030" note="77" /> 
<course sigle="INF1230" note="83" /></student> 
<student><name>John Coltrane</name> 
<course sigle="INF9430" note="24" /> 
<course sigle="INF1030" note="64" /> 
<course sigle="INF1230" note="56" /></student> 
<student><name>Charles Mingus</name> 
<course sigle="INF8430" note="34" /> 
<course sigle="INF1230" note="89" /></student> 
</university> 

输出文件应该是这样的:

<list> 
<course sigle="INF8430">85</course> 
<course sigle="INF1030">76.66666666666667</course> 
<course sigle="INF1230">81.5</course> 
<course sigle="INF9430">39</course> 
</list> 

非常感谢您的帮助!

+2

这将是很好的说出你已经尝试过。这个网站是关于协助,而不是为你做的工作! – adamretter 2015-04-01 16:24:20

回答

1
element list { 
    let $courses := doc('mydoc.xml')/university/student/course 
    for $id in distinct-values($courses/@sigle) 
    let $values := $courses[@sigle = $id]/xs:double(@note) 
    return element course { 
    attribute sigle { $id }, 
    fn:avg($values) 
    } 
} 
+0

谢谢!它完美的工作! – Sebastian 2015-04-01 16:26:20