使用声明" AS" SQL查询中的变量

时间:2015-03-11 21:16:44

标签: php mysql

我有以下查询,但不起作用:

$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;"

1 个答案:

答案 0 :(得分:1)

你可以在等式中使用COUNT(*)而不是别名,或者最后回答一个子查询。通常,如果可以使用连接,请避免使用子查询。