Mega Code Archive

 
Categories / MySQL / Select Clause
 

Union grouped value

mysql> mysql> mysql> CREATE   TABLE MATCHES     ->         (MATCHNO        INTEGER      NOT NULL,     ->          TEAMNO         INTEGER      NOT NULL,     ->          EmployeeNO       INTEGER      NOT NULL,     ->          WON            SMALLINT     NOT NULL,     ->          LOST           SMALLINT     NOT NULL,     ->          PRIMARY KEY    (MATCHNO)            ); Query OK, 0 rows affected (0.00 sec) mysql> mysql> INSERT INTO MATCHES VALUES ( 1, 1,   6, 3, 1); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES ( 2, 1,   6, 2, 3); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES ( 3, 1,   6, 3, 0); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES ( 4, 1,  44, 3, 2); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES ( 5, 1,  83, 0, 3); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES ( 6, 1,   2, 1, 3); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES ( 7, 1,  57, 3, 0); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES ( 8, 1,   8, 0, 3); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES ( 9, 2,  27, 3, 2); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES (10, 2, 104, 3, 2); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES (11, 2, 112, 2, 3); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES (12, 2, 112, 1, 3); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO MATCHES VALUES (13, 2,   8, 0, 3); Query OK, 1 row affected (0.00 sec) mysql> mysql> SELECT   CAST(TEAMNO AS CHAR(4)) AS TEAMNO,     ->          CAST(EmployeeNO AS CHAR(4)) AS EmployeeNO,     ->          SUM(WON + LOST) AS TOTAL     -> FROM     MATCHES     -> GROUP BY TEAMNO, EmployeeNO     -> UNION     -> SELECT   CAST(TEAMNO AS CHAR(4)),     ->          'subtotal',     ->          SUM(WON + LOST)     -> FROM     MATCHES     -> GROUP BY TEAMNO     -> UNION     -> SELECT   'total', 'total', SUM(WON + LOST)     -> FROM     MATCHES     -> ORDER BY 1, 2; +--------+------------+-------+ | TEAMNO | EmployeeNO | TOTAL | +--------+------------+-------+ | 1      | 2          |     4 | | 1      | 44         |     5 | | 1      | 57         |     3 | | 1      | 6          |    12 | | 1      | 8          |     3 | | 1      | 83         |     3 | | 1      | subtotal   |    30 | | 2      | 104        |     5 | | 2      | 112        |     9 | | 2      | 27         |     5 | | 2      | 8          |     3 | | 2      | subtotal   |    22 | | total  | total      |    52 | +--------+------------+-------+ 13 rows in set, 2 warnings (0.00 sec) mysql> mysql> drop table matches; Query OK, 0 rows affected (0.00 sec)