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.