两个COUNT的百分比

时间:2016-04-09 22:50:21

标签: geometry sparql rdf geospatial linked-data

我有这个查询:

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;” ......“+”......“ - ”......“*”......“/”......“在”......“中不在”...... ......。 ...... ......

3 个答案:

答案 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)
  }
}