我有以下查询,但不起作用:
$sql = "SELECT dma, COUNT(*) as dma_count, round(dma_count/32434 * 100) as dma_percent FROM {$table} where dma != '0' GROUP BY dma ORDER BY dma_count DESC;";
原因(我知道)它不起作用是因为我在这部分dma_count
中使用round(dma_count/32434 * 100)
。
这样做的正确方法是什么?
编辑:
其他挑战。而不是使用32434,我想使用一个变量。我得到这样的变量:
$get_total = "SELECT count(DISTINCT `exuid`) from {$table};";
$total = $dbh->query($get_total)->fetchAll(PDO::FETCH_ASSOC);
所以我的查询变为(使用评论中建议的修复)
$sql = "SELECT dma, COUNT(*) as dma_count, round(COUNT(*)/{$total} * 100) as dma_percent FROM {$table} where dma != '0' GROUP BY dma ORDER BY dma_count DESC;";
这不起作用,因为我认为$total
格式错误。我该如何解决这个问题?
再次编辑:
知道了! $total
只是我的行数,所以我改为。
SELECT dma, COUNT(*) as dma_count, round(COUNT(*)/(SELECT COUNT(*) FROM {$table}) * 100,2) as dma_percent FROM {$table} where dma != '0' GROUP BY dma ORDER BY dma_count DESC;"
答案 0 :(得分:1)
你可以在等式中使用COUNT(*)而不是别名,或者最后回答一个子查询。通常,如果可以使用连接,请避免使用子查询。