Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menambahkan Total Baris di MySQL

Sering kali, Anda perlu melaporkan data dalam tabel MySQL, bersama dengan totalnya. Ada 2 cara untuk menambahkan total baris di MySQL, menggunakan UNION ALL dan ROLLUP. Berikut cara menambahkan total baris di MySQL.

Cara Menambahkan Total Baris di MySQL

Berikut adalah langkah-langkah untuk menambahkan total baris di MySQL. Katakanlah Anda memiliki tabel penjualan berikut (tanggal_pesanan, obral).

mysql> create table sales(order_date date,sale int);
 
mysql> insert into sales values('2020-01-01',20),
('2020-01-02',25),('2020-01-03',15),('2020-01-04',30),
('2020-02-05',20),('2020-02-10',20),('2020-02-06',25),
('2020-03-07',15),('2020-03-08',30),('2020-03-09',20);
 
mysql> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   20 |
| 2020-01-02 |   25 |
| 2020-01-03 |   15 |
| 2020-01-04 |   30 |
| 2020-02-05 |   20 |
| 2020-02-10 |   20 |
| 2020-02-06 |   25 |
| 2020-03-07 |   15 |
| 2020-03-08 |   30 |
| 2020-03-09 |   20 |
+------------+------+

Kita akan melihat 2 cara untuk menambahkan total baris di MySQL – menggunakan UNION ALL dan ROLLUP. Fungsi ROLLUP telah ditambahkan ke MySQL dari kemungkinan versi 5.0. Jadi mereka yang bekerja dengan versi lama perlu menggunakan UNION ALL.

Menggunakan UNION ALL

Dalam pendekatan ini, kami SUM data dan hanya menambahkannya ke tabel asli kami menggunakan klausa UNION ALL, seperti yang ditunjukkan di bawah ini

mysql> select * from sales
       UNION ALL
       select 'Total' order_date,sum(sale) from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   20 |
| 2020-01-02 |   25 |
| 2020-01-03 |   15 |
| 2020-01-04 |   30 |
| 2020-02-05 |   20 |
| 2020-02-10 |   20 |
| 2020-02-06 |   25 |
| 2020-03-07 |   15 |
| 2020-03-08 |   30 |
| 2020-03-09 |   20 |
| Total      |  220 |
+------------+------+

Dalam kueri di atas, baris total yang ditampilkan sebagai baris terakhir ditambahkan ke tabel asli Anda menggunakan UNION ALL. Ini tidak mengubah tabel asli, tetapi hanya hasil yang ditampilkan. Saat menggunakan UNION ALL, kolom yang sama harus dipertahankan di semua kueri pemilihan yang digunakan di dalamnya. Itu sebabnya, kami telah menetapkan teks 'Total' sebagai tanggal_pesanan kolom. UNION ALL adalah cara kuno untuk menambahkan total di MySQL.

Bonus Baca :Cara Menghitung Running Total di MySQL

Menggunakan ROLLUP

Anda juga dapat menggunakan GROUP BY dengan klausa ROLLUP untuk langsung menjumlahkan nilai dan secara otomatis menambahkan total baris di MySQL, seperti yang ditunjukkan di bawah ini

mysql> select * from sales group by order_date with rollup;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   20 |
| 2020-01-02 |   25 |
| 2020-01-03 |   15 |
| 2020-01-04 |   30 |
| 2020-02-05 |   20 |
| 2020-02-06 |   25 |
| 2020-02-10 |   20 |
| 2020-03-07 |   15 |
| 2020-03-08 |   30 |
| 2020-03-09 |   20 |
| NULL       |   20 |
+------------+------+

Menggunakan ROLLUP lebih pendek dan juga membantu Anda menambahkan baris ringkasan dengan total, tetapi tidak memungkinkan Anda untuk menambahkan teks khusus seperti 'Total' di baris terakhir Anda. Masalah lain adalah bahwa itu akan secara otomatis menggulung data untuk beberapa level, menambahkan baris sub total serta baris total keseluruhan..

Berikut adalah contoh untuk menambahkan baris total di MySQL, menggunakan ROLLUP. Katakanlah Anda memiliki tabel berikut

mysql> create table sales(product varchar(255),order_date date,sale int);

mysql> insert into sales values('A','2020-01-01',20),('B','2020-01-02',25),
('B','2020-01-03',15),('A','2020-01-04',30),('A','2020-01-05',20);

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

Bonus Baca : Cara Menggabungkan Beberapa Baris menjadi Satu Bidang di MySQL

Tidak peduli bagaimana Anda menentukan klausa GROUP BY Anda, Anda akan selalu berakhir dengan NULL dan subtotal, saat Anda menambahkan baris total di MySQL, saat Anda menggunakan ROLLUP.

GROUP BY product and order_date
mysql> select product,order_date,sum(sale) 
       from sales group by product,order_date with rollup;
+---------+------------+-----------+
| product | order_date | sum(sale) |
+---------+------------+-----------+
| A       | 2020-01-01 |        20 |
| A       | 2020-01-04 |        30 |
| A       | 2020-01-05 |        20 |
| A       | NULL       |        70 |
| B       | 2020-01-02 |        25 |
| B       | 2020-01-03 |        15 |
| B       | NULL       |        40 |
| NULL    | NULL       |       110 |
+---------+------------+-----------+

GROUP BY only product
mysql> select product,order_date,sum(sale) from sales group by product with rollup;
+---------+------------+-----------+
| product | order_date | sum(sale) |
+---------+------------+-----------+
| A       | 2020-01-01 |        70 |
| B       | 2020-01-02 |        40 |
| NULL    | 2020-01-02 |       110 |
+---------+------------+-----------+

GROUP BY order_date
mysql> select product,order_date,sum(sale) from sales group by order_date with rollup;
+---------+------------+-----------+
| product | order_date | sum(sale) |
+---------+------------+-----------+
| A       | 2020-01-01 |        20 |
| B       | 2020-01-02 |        25 |
| B       | 2020-01-03 |        15 |
| A       | 2020-01-04 |        30 |
| A       | 2020-01-05 |        20 |
| A       | NULL       |       110 |
+---------+------------+-----------+

Namun, seperti yang disebutkan sebelumnya, ini adalah cara yang sangat nyaman untuk menghitung subtotal dengan cepat, dan menambahkan baris total di MySQL.

Jadi jika Anda ingin menyesuaikan total baris Anda, gunakan UNION ALL karena memberi Anda lebih banyak kontrol. Di sisi lain, jika Anda ingin menghitung sub total juga, gunakan ROLLUP.

Itu dia! Sekarang Anda tahu cara menambahkan baris total di MySQL.

Anda dapat menggunakan alat pelaporan untuk memplot data ini dalam tabel dan membagikannya dengan tim Anda. Berikut adalah contoh tabel yang dibuat menggunakan Ubiq.

Jika Anda ingin membuat grafik, dasbor &laporan dari database MySQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menggabungkan Beberapa Baris Menjadi Satu Kolom di MySQL

  2. Cara mengatur struktur indeks ElasticSearch dengan beberapa binding entitas

  3. MySQL versus MariaDB

  4. Bagaimana menghubungkan ke database menggunakan klien MySQL Workbench

  5. Server MySQL telah hilang saat mengimpor file sql besar