表的结构
求time字段值的总和(sum)除以id的条数(count) WHERE only='114' AND er="ok" AND time<>0 的结果我现在用的PHP这方法$sql="SELECT count(id) FROM `clicked` WHERE `er`='ok' AND `only`='114' AND `time`<>'0'";
$count1=mysql_query($sql);
$row1=mysql_fetch_array($count1);
$sql="SELECT sum(time) FROM `clicked` WHERE `er`='ok' AND `only`='114'";
$sum1=mysql_query($sql);
$row2=mysql_fetch_array($sum1);
$pingjun=$row2[0]/$row1[0]怎么整合为一条 最后求出值

解决方案 »

  1.   

    select (SELECT count(id) FROM `clicked` WHERE `er`='ok' AND `only`='114' AND `time`<>'0') / (SELECT sum(time) FROM `clicked` WHERE `er`='ok' AND `only`='114');
      

  2.   

    或者如下,视你的索引情况而选择一个效率高的就行了。
    SELECT sum(if(`time`<>'0',1,0))/sum(time) FROM `clicked` WHERE `er`='ok' AND `only`='114');
      

  3.   

    看不到图
    直接用你的SQL语句SELECT sum(time)/(SELECT count(id) FROM `clicked` WHERE `er`='ok' AND `only`='114' AND `time`<>'0') FROM `clicked` WHERE `er`='ok' AND `only`='114'or
    SELECT sum(time)/count(id) FROM `clicked` WHERE `er`='ok' AND `only`='114'
      

  4.   

    select sum(time)/count(id) from clicked
    where e='ok' and only='114';
      

  5.   

    SELECT sum(time)/sum(if(`time`<>'0',1,0)) FROM `clicked` WHERE `er`='ok' AND `only`='114');
      

  6.   

    逻辑上如果你的计数只是不包括 `time`<>'0' ,这里不知道为什么用了个字符的 '0' 而不是 直接 <>0这样,当你在执行 sum(time) 的时候,加不加这个 `time`<>'0'产生的结果应该都是一样的。 即使把这些  `time`='0' 加进去对SUM的结果也没有影响。所以直接
    SELECT sum(time)/count(id) FROM `clicked` WHERE `er`='ok' AND `only`='114'); 就可以了。
      

  7.   

    SELECT sum(time)/IFNULL(count(id),1) FROM `clicked` WHERE `er`='ok' AND `only`='114'