Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xQuery不同值和问题_Xquery - Fatal编程技术网

xQuery不同值和问题

xQuery不同值和问题,xquery,Xquery,我需要汇总特定产品类别的平均价格,目前我已设法合并相同的类别类型并对其进行计数,现在我需要汇总不同类别的所有价格(目前我已在查询中选择所有价格) 例如:如果有5种A类产品,我需要选择这5种价格并将其相加 查询: let $hk := doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt for $x in distinct-values($hk/kategorie) let $

我需要汇总特定产品类别的平均价格,目前我已设法合并相同的类别类型并对其进行计数,现在我需要汇总不同类别的所有价格(目前我已在查询中选择所有价格)

例如:如果有5种A类产品,我需要选择这5种价格并将其相加

查询

let $hk := doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt

for $x in distinct-values($hk/kategorie)
let $c := count($hk[kategorie eq $x])
let $a:= sum($hk/ekPreis)

return <kategorie kname="{$x}">
<anzahl>{$c}</anzahl>
<avgEkPreis>{$a div $c}</avgEkPreis>
</kategorie>
<handelskette>
    <produkte>
        <produkt ean="0-666-4567-2-22">
            <bezeichnung>Autoschampoo</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>35</ekPreis>
            <listPreis>69</listPreis>
        </produkt>
        <produkt ean="0-777-4997-2-43">
            <bezeichnung>Glanzpolitur</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>70</ekPreis>
            <listPreis>119</listPreis>
        </produkt>
        <produkt ean="1-4444-652-8-88">
            <bezeichnung>CD-Wechsler</bezeichnung>
            <kategorie>Audio</kategorie>
            <ekPreis>2345</ekPreis>
            <listPreis>3999</listPreis>
        </produkt>
    </produkte>  
</handelskette>
sum(for $vCat in distinct-values(/*/*/*/kategorie),
        $vCount in count(/*/*/produkt[kategorie eq $vCat])
     return
        sum(/*/*/produkt[kategorie eq $vCat]/ekPreis/xs:double(.)) div $vCount
    )
let$hk:=doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1)/handelskette/produkte/produkt
不同价值的x美元($hk/kategorie)
让$c:=计数($hk[kategorie eq$x])
let$a:=总额($hk/ekPreis)
返回
{$c}
{$a div$c}
XML

let $hk := doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt

for $x in distinct-values($hk/kategorie)
let $c := count($hk[kategorie eq $x])
let $a:= sum($hk/ekPreis)

return <kategorie kname="{$x}">
<anzahl>{$c}</anzahl>
<avgEkPreis>{$a div $c}</avgEkPreis>
</kategorie>
<handelskette>
    <produkte>
        <produkt ean="0-666-4567-2-22">
            <bezeichnung>Autoschampoo</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>35</ekPreis>
            <listPreis>69</listPreis>
        </produkt>
        <produkt ean="0-777-4997-2-43">
            <bezeichnung>Glanzpolitur</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>70</ekPreis>
            <listPreis>119</listPreis>
        </produkt>
        <produkt ean="1-4444-652-8-88">
            <bezeichnung>CD-Wechsler</bezeichnung>
            <kategorie>Audio</kategorie>
            <ekPreis>2345</ekPreis>
            <listPreis>3999</listPreis>
        </produkt>
    </produkte>  
</handelskette>
sum(for $vCat in distinct-values(/*/*/*/kategorie),
        $vCount in count(/*/*/produkt[kategorie eq $vCat])
     return
        sum(/*/*/produkt[kategorie eq $vCat]/ekPreis/xs:double(.)) div $vCount
    )

汽车香槟
普弗莱格
35
69
格兰仕政治
普弗莱格
70
119
CD韦克斯勒
音频
2345
3999

我将非常感谢任何帮助

只需使用

let $hk := doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt

for $x in distinct-values($hk/kategorie)
let $c := count($hk[kategorie eq $x])
let $a:= sum($hk/ekPreis)

return <kategorie kname="{$x}">
<anzahl>{$c}</anzahl>
<avgEkPreis>{$a div $c}</avgEkPreis>
</kategorie>
<handelskette>
    <produkte>
        <produkt ean="0-666-4567-2-22">
            <bezeichnung>Autoschampoo</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>35</ekPreis>
            <listPreis>69</listPreis>
        </produkt>
        <produkt ean="0-777-4997-2-43">
            <bezeichnung>Glanzpolitur</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>70</ekPreis>
            <listPreis>119</listPreis>
        </produkt>
        <produkt ean="1-4444-652-8-88">
            <bezeichnung>CD-Wechsler</bezeichnung>
            <kategorie>Audio</kategorie>
            <ekPreis>2345</ekPreis>
            <listPreis>3999</listPreis>
        </produkt>
    </produkte>  
</handelskette>
sum(for $vCat in distinct-values(/*/*/*/kategorie),
        $vCount in count(/*/*/produkt[kategorie eq $vCat])
     return
        sum(/*/*/produkt[kategorie eq $vCat]/ekPreis/xs:double(.)) div $vCount
    )
根据提供的XML文档计算此XPath 2.0表达式(以及XQuery)时:

<handelskette>
    <produkte>
        <produkt ean="0-666-4567-2-22">
            <bezeichnung>Autoschampoo</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>35</ekPreis>
            <listPreis>69</listPreis>
        </produkt>
        <produkt ean="0-777-4997-2-43">
            <bezeichnung>Glanzpolitur</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>70</ekPreis>
            <listPreis>119</listPreis>
        </produkt>
        <produkt ean="1-4444-652-8-88">
            <bezeichnung>CD-Wechsler</bezeichnung>
            <kategorie>Audio</kategorie>
            <ekPreis>2345</ekPreis>
            <listPreis>3999</listPreis>
        </produkt>
    </produkte>
</handelskette>
2397.5

只需使用

let $hk := doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt

for $x in distinct-values($hk/kategorie)
let $c := count($hk[kategorie eq $x])
let $a:= sum($hk/ekPreis)

return <kategorie kname="{$x}">
<anzahl>{$c}</anzahl>
<avgEkPreis>{$a div $c}</avgEkPreis>
</kategorie>
<handelskette>
    <produkte>
        <produkt ean="0-666-4567-2-22">
            <bezeichnung>Autoschampoo</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>35</ekPreis>
            <listPreis>69</listPreis>
        </produkt>
        <produkt ean="0-777-4997-2-43">
            <bezeichnung>Glanzpolitur</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>70</ekPreis>
            <listPreis>119</listPreis>
        </produkt>
        <produkt ean="1-4444-652-8-88">
            <bezeichnung>CD-Wechsler</bezeichnung>
            <kategorie>Audio</kategorie>
            <ekPreis>2345</ekPreis>
            <listPreis>3999</listPreis>
        </produkt>
    </produkte>  
</handelskette>
sum(for $vCat in distinct-values(/*/*/*/kategorie),
        $vCount in count(/*/*/produkt[kategorie eq $vCat])
     return
        sum(/*/*/produkt[kategorie eq $vCat]/ekPreis/xs:double(.)) div $vCount
    )
根据提供的XML文档计算此XPath 2.0表达式(以及XQuery)时:

<handelskette>
    <produkte>
        <produkt ean="0-666-4567-2-22">
            <bezeichnung>Autoschampoo</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>35</ekPreis>
            <listPreis>69</listPreis>
        </produkt>
        <produkt ean="0-777-4997-2-43">
            <bezeichnung>Glanzpolitur</bezeichnung>
            <kategorie>Pflege</kategorie>
            <ekPreis>70</ekPreis>
            <listPreis>119</listPreis>
        </produkt>
        <produkt ean="1-4444-652-8-88">
            <bezeichnung>CD-Wechsler</bezeichnung>
            <kategorie>Audio</kategorie>
            <ekPreis>2345</ekPreis>
            <listPreis>3999</listPreis>
        </produkt>
    </produkte>
</handelskette>
2397.5

我解释得不对,我的英语不太好。我的意思是,我需要每个类别都有自己的总结,但多亏了你,我才完成了你发布的部分语法

下面是我的问题-如果有人有类似问题:

let $hk := doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt

for $x in distinct-values($hk/kategorie)
let $c := count($hk[kategorie eq $x])
let $a:= sum($hk[kategorie eq $x]/ekPreis)

return <kategorie kname="{$x}">
<anzahl>{$c}</anzahl>
<avgEkPreis>{$a div $c}</avgEkPreis>
</kategorie>
let$hk:=doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1)/handelskette/produkte/produkt
不同价值的x美元($hk/kategorie)
让$c:=计数($hk[kategorie eq$x])
let$a:=总额($hk[kategorie eq$x]/ekPreis)
返回
{$c}
{$a div$c}

非常感谢您,祝您度过愉快的一周

我解释得不对,我的英语不太好。我的意思是,我需要每个类别都有自己的总结,但多亏了你,我才完成了你发布的部分语法

下面是我的问题-如果有人有类似问题:

let $hk := doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt

for $x in distinct-values($hk/kategorie)
let $c := count($hk[kategorie eq $x])
let $a:= sum($hk[kategorie eq $x]/ekPreis)

return <kategorie kname="{$x}">
<anzahl>{$c}</anzahl>
<avgEkPreis>{$a div $c}</avgEkPreis>
</kategorie>
let$hk:=doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1)/handelskette/produkte/produkt
不同价值的x美元($hk/kategorie)
让$c:=计数($hk[kategorie eq$x])
let$a:=总额($hk[kategorie eq$x]/ekPreis)
返回
{$c}
{$a div$c}

非常感谢您,祝您度过愉快的一周

如果您的处理器处理XQuery 3.0,您可以尝试
group by
以提高可读性:

for $produkt  in  doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt
  group by $kname := $produkt/kategorie
  let $anzahl     := count($produkt)
  let $avg_ek     := sum($produkt/ekPreis) div $anzahl
return
<kategorie kname="{ $kname }">
  <anzahl>{ $anzahl }</anzahl>
  <avgEkPreis>{ $avg_ek }</avgEkPreis>
</kategorie>
用于单据中的$produkt('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1)/handelskette/produkte/produkt
按$kname分组:=$produkt/kategorie
让$anzahl:=计数($produkt)
假设$avg_ek:=总额($produkt/ekPreis)div$anzahl
返回
{$anzahl}
{$avg_ek}

如果您的处理器处理XQuery 3.0,您可以尝试使用
分组方式来提高可读性:

for $produkt  in  doc('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1')/handelskette/produkte/produkt
  group by $kname := $produkt/kategorie
  let $anzahl     := count($produkt)
  let $avg_ek     := sum($produkt/ekPreis) div $anzahl
return
<kategorie kname="{ $kname }">
  <anzahl>{ $anzahl }</anzahl>
  <avgEkPreis>{ $avg_ek }</avgEkPreis>
</kategorie>
用于单据中的$produkt('http://etutor.dke.uni-linz.ac.at/etutor/XML?id=1)/handelskette/produkte/produkt
按$kname分组:=$produkt/kategorie
让$anzahl:=计数($produkt)
假设$avg_ek:=总额($produkt/ekPreis)div$anzahl
返回
{$anzahl}
{$avg_ek}