2011-08-12 4 views
-3

사용자 테이블에서 전체 사용자, % female, % male을 얻는 쿼리를 작성하려면 어떻게해야합니까? 나는 남성과 여성 칼럼이있는 사용자 테이블을 가지고 있습니다. 이 의사 코드가 될해야합니다, 그래서 계속하는 특정 정보, 정말 충분하지의사용자 테이블 mysql에 대한 평균 남성 및 여성 평균 얻기

+0

테이블 정의를 공유하십시오 – Shoan

답변

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

젠드 프레임 워크에 대해 동일한 쿼리를 작성하는 방법 – 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 - %의 남성.