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

Cara Menghitung Persentase Kolom di MySQL

Terkadang Anda mungkin perlu menghitung persentase kolom (misalnya penjualan, pendapatan) dalam data Anda untuk memahami berapa persen nilai total kolom Anda yang berasal dari setiap baris (misalnya negara, negara bagian, dll). Karena tidak ada fungsi out-of-the-box untuk menghitung nilai ini, Anda perlu menulis kueri SQL untuknya. Berikut cara menghitung persentase kolom di MySQL

Cara Menghitung Persentase Kolom di MySQL

Katakanlah Anda memiliki tabel berikut seperti yang ditunjukkan di bawah ini.

mysql> create table sales(rep varchar(255),sale int);

mysql> insert into sales values('Bob',15),('Sally',30),('Peter',15);

mysql> select * from sales;
+-------+------+
|  rep  | sale |
+-------+------+
|  Bob  |  15  |
| Sally |  30  |
| Peter |  15  |
+-------+------+

Katakanlah Anda ingin menampilkan kolom 'persen dari total' yang merupakan persentase dari total penjualan kolom, seperti yang ditunjukkan di bawah ini.

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

Anda dapat melakukan ini dengan berbagai cara hanya dengan menggunakan satu kueri. Tidak perlu menulis kueri terpisah untuk menghitung total dan persentase. Mari kita lihat masing-masing

Bonus Baca : Cara Menghitung Persentase Dua Kolom di MySQL

Cara Menghitung Persentase Kolom di MySQL menggunakan CROSS JOIN

Untuk menghitung persentase kolom di MySQL, Anda cukup bergabung dengan sum() dari penjualan kolom dengan tabel asli.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total`
FROM sales
CROSS JOIN (SELECT SUM(sale) AS s FROM sales) t;

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

Jika Anda ingin menambahkan klausa where untuk memfilter data Anda, Anda harus meletakkannya setelah CROSS JOIN, seperti yang ditunjukkan di bawah ini. Jika tidak, Anda akan mendapatkan kesalahan.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total`
FROM sales
CROSS JOIN (SELECT SUM(sale) AS s FROM sales) t where Rep='Bob';
+------+------+------------------+
| Rep  | Sale | percent of total |
+------+------+------------------+
| Bob  |  15  |       25         |
+------+------+------------------+

Namun, jika Anda ingin menambahkan klausa where selama penjumlahan kolom, Anda perlu menambahkannya di klausa pilih total, seperti yang ditunjukkan di bawah ini. Katakanlah, Anda ingin mengecualikan Bob dari total itu sendiri, lalu inilah kueri untuk melakukannya.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total` 
FROM sales 
CROSS JOIN (SELECT SUM(sale) AS s FROM sales where Rep<>'Bob') t 
where Rep<>'Bob';
+-------+------+------------------+
|  Rep  | Sale | percent of total |
+-------+------+------------------+
| Sally |  30  |      66.6667     |
| Peter |  15  |      33.3333     |
+-------+------+------------------+

Bonus Baca : Cara Menghitung Persentase Pertumbuhan Minggu Ke Minggu di MySQL

Cara Menghitung Persentase Kolom di MySQL menggunakan SUBSELECT/SUBQUERY

Anda juga dapat menghitung persentase kolom menggunakan subpilihan, daripada menggunakan GABUNG, seperti yang ditunjukkan di bawah ini.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales) AS `percent of total`
FROM sales;

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

Jika Anda ingin menambahkan klausa where untuk memfilter data Anda, Anda harus meletakkannya setelah CROSS JOIN, seperti yang ditunjukkan di bawah ini. Jika tidak, Anda akan mendapatkan kesalahan.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales) AS `percent of total` 
FROM sales
where Rep='Bob';
+--------+--------+-------------------+
|   Rep  |  Sale  |  percent of total |
+--------+--------+-------------------+
|  Bob   |    15  |         25        |
+--------+--------+-------------------+

Namun, jika Anda ingin menambahkan klausa where saat menjumlahkan kolom, Anda perlu menambahkannya di klausa pilih total. Katakanlah, Anda ingin mengecualikan Bob dari total itu sendiri, lalu inilah kueri untuk melakukannya.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales where Rep='Bob') AS `percent of total` 
FROM sales
where Rep='Bob';
+-------+------+------------------+
|  Rep  | Sale | percent of total |
+-------+------+------------------+
| Sally |  30  |      66.6667     |
| Peter |  15  |      33.3333     |
+-------+------+------------------+

Anda dapat menyesuaikan kueri di atas sesuai kebutuhan Anda untuk menghitung persentase kolom di MySQL.

Selanjutnya, Anda dapat menggunakan alat pelaporan untuk memplot data dalam diagram lingkaran atau dasbor. Berikut adalah contoh diagram lingkaran 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. Apakah Mysql memiliki setara dengan @@ROWCOUNT seperti di mssql?

  2. Apa yang lebih cepat, SELECT DISTINCT atau GROUP BY di MySQL?

  3. Cara mengembalikan baris yang memiliki nilai kolom yang sama di MySql

  4. MyCLI – Klien MySQL/MariaDB dengan Pelengkapan Otomatis dan Penyorotan Sintaks

  5. Cara Mengonversi String ke Heksadesimal di MySQL – HEX()