2015-10-06 54 views
1

我有一個表作爲字段和用戶名作爲另一個計數。我已經成功通過此查詢獲得的所有記錄有問題的當月總數:mysql select that calculated percentage

select count(*) 
from forms 
where Month(date) = MONTH(CURDATE()) 
    AND YEAR(CURDATE()); 

我也設法通過這個查詢來獲取個人用戶的條目:

select u_name, count(*) AS numb 
from forms 
where Month(date) = MONTH(CURDATE()) 
    AND YEAR(CURDATE()) 
GROUP BY U_name 
ORDER BY numb DESC;` 

所以......第一個給我回到了'12'之類的東西......換句話說,10月份錄入了12條記錄(比方說)。第二個查詢給了我這樣的:

約翰5 瑪麗7

我正在與struggeling是一個查詢,這將使我的每個用戶條目的比例....即約翰是41%。在12項中有5項。

希望我清楚....感謝您的任何幫助。

+0

您將需要使用子查詢來做你想做的。不是世界上最簡單的東西,但它會起作用! – itoctopus

+2

會這個以前的一些 - 什麼類似的解決方案幫助:http://stackoverflow.com/questions/15746749/mysql-calculate-percentage – DTH

+1

你是否缺少'和年(CURDATE())'的東西 - 不應該是比較等於什麼? – Barmar

回答

1

加入用分組查詢計算總數的查詢。

SELECT u_name, COUNT(*) AS numb, COUNT(*)*100/total AS pct 
FROM forms 
CROSS JOIN (SELECT COUNT(*) AS total 
      FROM forms 
      WHERE MONTH(date) = MONTH(NOW()) AND YEAR(date) = YEAR(NOW())) AS x 
WHERE MONTH(date) = MONTH(NOW()) AND YEAR(date) = YEAR(NOW()) 
+0

巴馬爾做到了。謝謝!我只需要弄清楚如何減小小數點,因爲它給我的結果像44.444 但除此之外,感謝所有! – Xyz

+0

http://stackoverflow.com/questions/11190668/format-number-to-2-decimal-places – Barmar