Query Select Oracle PLSQL Tutorial

SQL>
SQL> CREATE TABLE product
  2  (item         VARCHAR(10)
  3  ,serialNumber INT
  4  ,price        INT
  5  );
Table created.
SQL> INSERT INTO product VALUES ('AAA', 1,10);
1 row created.
SQL> INSERT INTO product VALUES ('BBB',2,10);
1 row created.
SQL> INSERT INTO product VALUES ('AAA', 3,10);
1 row created.
SQL> INSERT INTO product VALUES ('CCC',4,10);
1 row created.
SQL> INSERT INTO product VALUES ('BBB',5,10);
1 row created.
SQL> INSERT INTO product VALUES ('BBB',6,10);
1 row created.
SQL>
SQL> SELECT item, serialNumber, price FROM product
  2  UNION
  3  SELECT item, NULL,         SUM(price)
  4    FROM product
  5   GROUP BY item
  6  ORDER BY item;
ITEM       SERIALNUMBER      PRICE
---------- ------------ ----------
AAA                   1         10
AAA                   3         10
AAA                             20
BBB                   2         10
BBB                   5         10
BBB                   6         10
BBB                             30
CCC                   4         10
CCC                             10
9 rows selected.
SQL> SELECT item, serialNumber, price FROM(
  2    SELECT item, serialNumber, price FROM product
  3    UNION
  4    SELECT item, NULL,         SUM(price)
  5      FROM product
  6     GROUP BY item
  7    UNION
  8    SELECT NULL, NULL,         SUM(price)
  9      FROM product
 10  ) t
 11  ORDER BY COALESCE(item,'zzz'), COALESCE(serialNumber,1E9);
ITEM       SERIALNUMBER      PRICE
---------- ------------ ----------
AAA                   1         10
AAA                   3         10
AAA                             20
BBB                   2         10
BBB                   5         10
BBB                   6         10
BBB                             30
CCC                   4         10
CCC                             10
                                60
10 rows selected.
SQL>
SQL> DROP TABLE product;
Table dropped.