2015-05-14 61 views
-2
$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完成。

+1

什麼你到目前爲止已經試過 –

+0

誰能幫助我在PHP做。 – Drup

+0

*「可以通過SQL或PHP完成」* --- *「任何人都可以幫助我在PHP中完成」* ---您在SQL中提出要求,人們使用SQL向您提供答案,因此回答問題的答案給出。否則,請將您的問題修改爲*「可以通過PHP完成」*。 –

回答

0

在大多數數據庫,你可以這樣做:

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

(你也可以得到 「3/20」,如果您想單獨把列)

許多PHP的用戶使用MySQL,不支持這種語法。相反:

select t.title, count(*), count(*) * 1.0/total.total 
from table t cross join 
    (select count(*) as total from table t) total 
group by t.title; 
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 
+0

按預期工作。修改一點點。 SELECT a.TITLE,COUNT(a.TITLE)AS tot,COUNT(a。(*)FROM ACCESSLOG b)AS根據 來自ACCESSLOG a GROUP BY a.TITLE ORDER BY a.TITLE ASC – Drup

+0

如何打印查詢生成的結果總數和總數While循環之外的明顯標題。 – Drup

+0

馬特,代碼打印個人計數。我需要打印結果行數(不同TITLES的總數)和COUNT(a.TITLE)的SUM。 – Drup