To know the percentage distribution : Round « Math « SQL / MySQL






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>

   
    
    
    
    
    
  








Related examples in the same category

1.ROUND value in MySQL
2.ROUND( [, ]): To round off a number, you must specify that number as an argument of the funct