我正在尝试将以下MySQL查询等效于XQuery
SELECT S.Classification, COUNT(S.Classification) AS "No. Students", AVG(S.GPA) AS "AVG
Class. GPA"
FROM Student S
GROUP BY S.Classification
ORDER BY S.Classification ASC;
这输出: http://i.stack.imgur.com/Iu0d4.png
我的数据库的位置如下:
CREATE TABLE 'Student' (
'StudentID' CHAR(9) NOT NULL,
'Classification' CHAR(10) NULL DEFAULT NULL,
'GPA` DOUBLE NULL DEFAULT NULL,
'MentorID' CHAR(9) NULL DEFAULT NULL,
'CreditHours' INT(11) NULL DEFAULT NULL,
PRIMARY KEY ('StudentID')
)
用XML:
<Document>
<Table>
<StudentID>118784412</StudentID>
<Classification>Sophomore</Classification>
<GPA>3.19</GPA>
<MentorID>201586985</MentorID>
<CreditHours>39</CreditHours>
</Table>
</Document>
我不确定如何在xquery中使用count()和avg()。 我从哪里开始?感谢任何帮助,谢谢。
答案 0 :(得分:1)
您可以使用XQuery 3.0中定义的group by运算符轻松实现此目的。假设给定的xml在变量$doc
中,并且数据库的每一行都在另一个<Table />
节点中,您可以这样做:
for $student in $doc/Table
let $classification := $student/Classification
group by $classification
order by $classification
return
<output>
<Classification>{$classification}</Classification>
<NoStudents>{count($student)}</NoStudents>
<AvgGPA>{avg($student/GPA)}</AvgGPA>
</output>