繁体   English   中英

XQuery:排序后返回最大值

[英]XQuery: Returning the highest value after ordering

我还是 XQuery 的新手,但我几乎已经弄清楚了这个查询,但它只需要返回具有最多作者的元素的 proteinID 和 numberOfAuthors,但是它目前返回所有这些而不是只返回元素作者数量最多。

我的查询是

for $i in doc("test.xml")/ProteinDatabase/ProteinEntry
let $author-count := count($i/reference/refinfo/authors)
let $proteinID := $i/@id
where $author-count = max($author-count)
order by $author-count descending
return ((<proteinID>{data($proteinID)}</proteinID>,
<numberOfAuthors>{data($author-count)}</numberOfAuthors>))

返回:

<proteinID>QRHUA4</proteinID>
<numberOfAuthors>47</numberOfAuthors>
<proteinID>PLHU</proteinID>
<numberOfAuthors>29</numberOfAuthors>
<proteinID>LPHUB</proteinID>
<numberOfAuthors>29</numberOfAuthors>

等等。

我只想返回的是第一个 proteinID,最高的是 47,如下所示:

<proteinID>QRHUA4</proteinID>
<numberOfAuthors>47</numberOfAuthors>

我已经尝试了一些东西,比如我的 where 语句

where $author-count = max($author-count)

但它似乎并没有真正做任何事情。 我也尝试了一些定位的东西,只选择了第一个索引,但它似乎只返回 ID QRHUA4,而不是 numberOfAuthors

好吧,您可以简单地使用 select 结果序列中的第一项

(for $i in doc("proteindb.xml")/ProteinDatabase/ProteinEntry
let $author-count := count($i/reference/refinfo/authors)
let $proteinID := $i/@id
where $author-count = max($author-count)
order by $author-count descending
return ((<proteinID>{data($proteinID)}</proteinID>,
<numberOfAuthors>{data($author-count)}</numberOfAuthors>)))[1]

或者

head(for $i in doc("proteindb.xml")/ProteinDatabase/ProteinEntry
let $author-count := count($i/reference/refinfo/authors)
let $proteinID := $i/@id
where $author-count = max($author-count)
order by $author-count descending
return ((<proteinID>{data($proteinID)}</proteinID>,
<numberOfAuthors>{data($author-count)}</numberOfAuthors>)))
for $i in //ProteinEntry[reference/refinfo/authors/count(*) = 
                         max(//ProteinEntry/reference/refinfo/authors/count(*))
                        ]
let $author-count := count($i/reference/refinfo/authors/author)
let $proteinID := $i/@id
return ((<proteinID>{$proteinID}</proteinID>,
<numberOfAuthors>{$author-count}</numberOfAuthors>))

小提琴: https://xqueryfiddle.liberty-development.net/jyH9Xv4/1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM