Mega Code Archive

 
Categories / MySQL / Math
 

To know the percentage distribution

mysql> mysql> mysql> mysql> CREATE TABLE mytable (     ->   id int(11) NOT NULL default '0',     ->   choice tinyint(4) NOT NULL default '0',     ->   ts timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,     ->   PRIMARY KEY  (id)     -> ); Query OK, 0 rows affected (0.01 sec) mysql> mysql> INSERT INTO mytable VALUES (1,4,'2003-01-14 15:46:18'),     ->                                 (2,1,'2003-01-14 15:49:44'),     ->                                 (3,4,'2003-01-14 15:49:50'),     ->                                 (4,4,'2003-01-14 15:49:53'),     ->                                 (5,4,'2003-01-14 15:49:54'),     ->                                 (6,2,'2003-01-14 15:49:58'); Query OK, 6 rows affected (0.00 sec) Records: 6  Duplicates: 0  Warnings: 0 mysql> mysql> mysql> mysql> SELECT DATE_FORMAT(ts, '%Y-%m') AS mnth,     -> ROUND(SUM(IF(choice=1, 1, 0)) * 100 / COUNT(*), 1) AS c,     -> ROUND(SUM(IF(choice=2, 1, 0)) * 100 / COUNT(*), 1) AS java,     -> ROUND(SUM(IF(choice=3, 1, 0)) * 100 / COUNT(*), 1) AS perl,     -> ROUND(SUM(IF(choice=4, 1, 0)) * 100 / COUNT(*), 1) AS php,     -> ROUND(SUM(IF(choice=5, 1, 0)) * 100 / COUNT(*), 1) AS vb,     -> ROUND(SUM(IF(choice=6, 1, 0)) * 100 / COUNT(*), 1) AS other     -> FROM mytable     -> GROUP BY mnth; +---------+------+------+------+------+------+-------+ | mnth    | c    | java | perl | php  | vb   | other | +---------+------+------+------+------+------+-------+ | 2003-01 | 16.7 | 16.7 |  0.0 | 66.7 |  0.0 |   0.0 | +---------+------+------+------+------+------+-------+ 1 row in set (0.00 sec) mysql> mysql> drop table mytable; Query OK, 0 rows affected (0.00 sec) mysql>