[英]Total Rows From Each GROUP BY
我正在嘗試運行MySQL查詢並使用PHP執行以下操作:
我需要在一列(GROUP BY)中對數據進行分組,然后計算(COUNT)每個組中的行數。 之后,我需要將給定組中的行數除以組的數量,以獲得該組的受歡迎程度百分比。
所以,如果我有一個包含以下數據的表:
Version_Number
1.1
1.2
1.1
1.2
1.2
1.1
I need the final output to be:
1.1 50%
1.2 50%
你可能需要為mysql調整這個(我通常在oracle中工作)但是:
SELECT
( count(*) / totalCount * 100) AS percentOfVersionedThings
, Version_Number
FROM tableOfVersionedThings
INNER JOIN ( SELECT count(*) as totalCount FROM tableOfVersionedThings ) ON 1=1
GROUP BY Version_Number
如果這是Oracle,我建議使用分析,但我不確定MySQL中是否存在等價物。 也就是說,在您的情況下,一個簡單的子查詢應該可以解決問題,它應該適用於任何SQL數據庫。
這是我在嘗試上述操作后最終做的事情:
$result = mysql_query("SELECT COUNT(*) AS nsites FROM table WHERE auth = '$auth'") or
die(mysql_error());
$return_sites = mysql_fetch_array($result);
if (!$return_sites['nsites']) {
echo "...";
} else {
$esult = mysql_query("SELECT * FROM table WHERE auth = '$auth' GROUP BY theme_version") or die(mysql_error());
while($row = mysql_fetch_array($esult)){
$get_current_version = $row['theme_version'];
$vresult = mysql_query("SELECT COUNT(*) AS nversion FROM table WHERE auth = '$auth' AND theme_version = '$get_current_version'") or die(mysql_error());
$version = mysql_fetch_array($vresult);
$percent = round($version['nversion'] / $return_sites['nsites'] * 100);
echo "...";
}
}
像這樣的東西:
select v."Version_Number", count(v."Version_Number"),count(v."Version_Number")::float / (select count(v2."Version_Number")::float from versions v2 )::float * 100::float
from versions as v
group by v."Version_Number"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.