2011-08-12 11 views

答えて

1
mysql> CREATE TABLE user (username VARCHAR(20) NOT NULL, gender ENUM('male','female')); 
Query OK, 0 rows affected (0.09 sec) 

mysql> INSERT INTO user (username, gender) VALUES 
    -> ('berry', 'male'), 
    -> ('jessica alba', 'female'), 
    -> ('Sasha DiGiulian', 'female'); 
Query OK, 3 rows affected (0.03 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> SELECT COUNT(username), gender FROM user GROUP BY gender; 
+-----------------+--------+ 
| COUNT(username) | gender | 
+-----------------+--------+ 
|    1 | male | 
|    2 | female | 
+-----------------+--------+ 
2 rows in set (0.02 sec) 


mysql> SELECT total, gender, number, (100 * number/total) AS percentage FROM (SELECT COUNT(username) AS total FROM user) AS total, (SELECT COUNT(username) AS number, gender FROM user GROUP BY gender) as genders; 
+-------+--------+--------+------------+ 
| total | gender | number | percentage | 
+-------+--------+--------+------------+ 
|  3 | male |  1 | 33.3333 | 
|  3 | female |  2 | 66.6667 | 
+-------+--------+--------+------------+ 
2 rows in set (0.00 sec) 

EDIT:パーセンテージの計算も追加されました。

+0

どうすればzendフレームワークの同じクエリを書くことができますか – anurodh

+0

@anurodh私はZFを使用しないのでわかりませんが、ZFにも生のSQLも書き込むことができますか? –

2

に行くのに十分な特定の情報が、それは擬似コードする必要がありますので、私は怖い、本当にありません。

%male = (100 * Number of Rows where sex == Male)/Total Number of Rows 
%female = (100 * Number of Rows where sex == Female)/Total Number of Rows 

各行は唯一の男性または女性、%の女性=することができた場合100 - %の男性。

関連する問題