使用XQuery统计每位讲师的section_listing分配数量求助
解决XQuery统计讲师授课section数量的问题
你的代码有两个核心问题:
- XML文档里不存在
instructor_listing元素,你要统计的是每个讲师对应的section_listing数量,并非这个不存在的节点 - 没有对讲师姓名进行分组,只是逐个遍历section返回无效的count结果
正确的XQuery代码
let $sections := doc("course.xml")/root/course_listing/section_listing for $instructor in distinct-values($sections/instructor) let $count := count($sections[instructor = $instructor]) return <instructor_stats> <name>{$instructor}</name> <section_count>{$count}</section_count> </instructor_stats>
代码说明
- 先用
let获取所有section_listing节点的集合 - 通过
distinct-values提取所有不重复的讲师姓名,避免重复统计同一讲师 - 对每个讲师,统计所有
instructor值匹配当前讲师的section_listing数量 - 返回包含讲师姓名和对应section数量的结构化XML结果
针对你提供的XML文档,运行这段代码会得到如下结果:
<instructor_stats> <name>Gusavac</name> <section_count>2</section_count> </instructor_stats> <instructor_stats> <name>Silberg</name> <section_count>1</section_count> </instructor_stats>
如果需要更简洁的文本输出,可调整返回格式:
let $sections := doc("course.xml")/root/course_listing/section_listing for $instructor in distinct-values($sections/instructor) let $count := count($sections[instructor = $instructor]) return concat($instructor, ": ", $count, " sections")
输出结果:
Gusavac: 2 sections Silberg: 1 sections
内容的提问来源于stack exchange,提问作者user19485723
相关产品推荐
相关产品推荐

