我有这个sparql查询:
SELECT DISTINCT (COUNT(?bw) AS ?total) (COUNT(?bw_bad) AS ?total_bad) WHERE
{
{
SELECT ?bw WHERE
{
?bw unt:has_bwid ?id
}
}
UNION
{
SELECT ?bw_bad WHERE
{
?bw_bad unt:has_rbdname ?rbd_name_bad .
?bw_bad unt:has_concie_0 ?concie_0 .
FILTER(?concie_0 > 40)
}
}
}
给出:
total total_bad
"2155"^^<http://www.w3.org/2001/XMLSchema#integer> "46"^^<http://www.w3.org/2001/XMLSchema#integer>
我想计算它们的百分比,这将给出(46/2155 * 100)2.13%。我该怎么做?我不关心表现。
我的尝试:
SELECT ((COUNT(?bw_bad) AS ?total_bad)/(COUNT(?bw) AS ?total)*100) WHERE
给出了这种语法错误:
在第10行第34栏遇到“”作为“AS”“。期待以下之一:”)“......”=“......”!=“......”&gt;“ ......“&lt;” ......“&lt; =”......“&gt; =”......“||” ......“&amp;&amp;” ......“+”......“ - ”......“*”......“/”......“在”......“中不在”...... ......。 ...... ......
答案 0 :(得分:2)
问题有两个:你在计算期间将聚合的中间结果分配给变量,然后你实际上没有将最终结果分配给变量。你应该做这样的事情:
@Component({
selector: 'tree-view',
template: `
<div *ngFor="#dir of dirs">
<tree-view [dirs]="dir.dirs"></tree-view>
<div>
`,
directives: [TreeView]
})
export class TreeView {
@Input()
private dirs: Array<Directory>;
}
答案 1 :(得分:2)
改变这个:
{{1}}
到此:
{{1}}
答案 2 :(得分:1)
您的选择中的AS
正在为汇总结果指定名称。由于您在计算中使用聚合,因此无需为其命名,这就是为什么不允许语法的原因。
使用子选择几乎总是一个错误,除非它们被用于计算周围查询所需的聚合。在这种情况下,您不会这样做,因此您可以删除子选项以获得更有效的查询:
SELECT (((COUNT(?bw_bad)/COUNT(?bw))*100) AS ?total_bad)
WHERE
{
{
?bw unt:has_bwid ?id .
}
UNION
{
?bw_bad unt:has_rbdname ?rbd_name_bad .
?bw_bad unt:has_concie_0 ?concie_0 .
FILTER(?concie_0 > 40)
}
}