显示结果的计数和百分比

时间:2015-05-14 12:08:44

标签: php sql

$query = "SELECT TITLE FROM ACCESSLOG ORDER BY TITLE ASC";

$Result = db_query($query);
        while ( $DataResult = $Result->fetchAssoc() ) {
            echo '<a href='. $DataResult["path"].' >'.$DataResult["title"].'</a><br>';
        }

它给出了结果

标题1 标题1 标题1 标题1 标题2
标题2
标题2
标题3
标题3
标题4
标题5
标题5
标题5
标题5
标题6
标题6
标题6
标题7
标题8
标题8
标题9
标题9
标题9
标题10
标题10
标题10

我需要将其重写为

总计26

标题1 - 4 - 0.2(4/20)
标题2 - 3 - 0.15(3/20)
标题3 - 2 - 0.1(2/20)
标题4 - 1 - 0.05(1/20)
标题5 - 4 - 0.2(4/20)
标题6 - 3 - 0.15(3/20)
标题7 - 1 - 0.1(1/20)
标题8 - 2 - 0.2(4/20)
标题9 - 3 - 0.15(3/20)
标题10 - 3 - 0.15(3/20)

可以通过SQL或PHP来完成。

2 个答案:

答案 0 :(得分:0)

在大多数数据库中,您可以这样做:

c

(如果你想通过单独放置列,你也可以得到“3/20”。)

许多PHP用户使用MySQL,它不支持这种语法。代替:

select title, count(*), count(*) * 1.0 / count(*) over ()
from table t
group by title

答案 1 :(得分:0)

SELECT a.TITLE, COUNT(a.TITLE) AS tot, COUNT(a.TITLE)/(SELECT COUNT(*) FROM ACCESSLOG b) AS Per 
FROM ACCESSLOG a 
GROUP BY a.TITLE 
ORDER BY a.TITLE ASC