Mengambil Kesimpulan Pada Nilai NULL - MySQL Dasar #57

Selanjutnya disini kita akan belajar bagaimana mengambil kesimpulan dari sekolompok nilai yang memuat nilai – nilai NULL lalu kemudian kita akan menginterpretasikan hasilnya. Secara default fungsi agregat akan mengabaikan nilai NULL. 


Perhatikan misalnya disini Anda memiliki sebuah tabel percobaan yang sebagian datanya memuat nilai – nilai nul seperti berikut :
MariaDB [root93]> SELECT * FROM percobaan;
+--------+------+------+
| subjek | test | skor |
+--------+------+------+
| Randi  | A    |   47 |
| Randi  | B    |   50 |
| Randi  | C    | NULL |
| Randi  | D    | NULL |
| Rudi   | A    |   52 |
| Rudi   | B    |   45 |
| Rudi   | C    |   53 |
| Rudi   | D    | NULL |
+--------+------+------+
8 rows in set (0.001 sec)
Selanjutnya disini kita akan mencoba menatas baris setiap subjek, mengelompokan berdasarkan subjek dimana tiap subjek akan dijumlah nilai total skornya, rata – rata, nilai terkecil dan terbesarnya seperti berikut :
MariaDB [root93]> SELECT subjek,
    -> COUNT(skor) AS n,
    -> SUM(skor) AS total,
    -> AVG(skor) AS rerata,
    -> MIN(skor) AS terendah,
    -> MAX(skor) AS tertinggi
    -> FROM percobaan
    -> GROUP by subjek;
+--------+---+-------+---------+----------+-----------+
| subjek | n | total | rerata  | terendah | tertinggi |
+--------+---+-------+---------+----------+-----------+
| Randi  | 2 |    97 | 48.5000 |       47 |        50 |
| Rudi   | 3 |   150 | 50.0000 |       45 |        53 |
+--------+---+-------+---------+----------+-----------+
2 rows in set (0.001 sec)
Perhatikan output dari query diatas bahwa “n” (banyaknya tes) hanya menghitung sebanyak 5 tes. Hal tersebut dikarenakan fungsi agregat hanya menghitung nilai – nilai angka, bukan NULL untuk tiap subjeknya. Selanjutnya perhatikan query yang hampir sama dengan sebelumnya tetapi hanya terdapat perbedaan kecil dimana kita akan tambahkan klausa WHERE yang nantinya akan memilih skor – skor dengan nilai NULL
MariaDB [root93]> SELECT subjek,
    -> COUNT(skor) n,
    -> SUM(skor) AS total,
    -> AVG(skor) AS rerata,
    -> MIN(skor) AS terendah,
    -> MAX(skor) AS tertinggi
    -> FROM percobaan
    -> WHERE skor IS NULL
    -> GROUP by subjek;
+--------+---+-------+--------+----------+-----------+
| subjek | n | total | rerata | terendah | tertinggi |
+--------+---+-------+--------+----------+-----------+
| Randi  | 0 |  NULL |   NULL |     NULL |      NULL |
| Rudi   | 0 |  NULL |   NULL |     NULL |      NULL |
+--------+---+-------+--------+----------+-----------+
2 rows in set (0.013 sec)
Selanjutnya jika Anda tidak ingin fungsi – fungsi menghasilkan NULL pada keluaran query Anda bisa menggunakan IFNULL() untuk memetakan hasilnya.
MariaDB [root93]> SELECT subjek,
    -> COUNT(skor) AS n,
    -> SUM(skor) AS total,
    -> IFNULL(AVG(skor),0) AS rerata,
    -> IFNULL(MIN(skor),'Tidak Dikenali') AS terendah,
    -> IFNULL(MAX(skor),'Tidak Dikenali') AS tertinggi
    -> FROM percobaan
    -> WHERE skor IS NULL
    -> GROUP by subjek;
+--------+---+-------+--------+----------------+----------------+
| subjek | n | total | rerata | terendah       | tertinggi      |
+--------+---+-------+--------+----------------+----------------+
| Randi  | 0 |  NULL | 0.0000 | Tidak Dikenali | Tidak Dikenali |
| Rudi   | 0 |  NULL | 0.0000 | Tidak Dikenali | Tidak Dikenali |
+--------+---+-------+--------+----------------+----------------+
2 rows in set (0.001 sec)
Fungsi COUNT() berbeda dengan fungsi – fungsi lain dalam memperlakukan nilai NULL. Sama seperti fungsi agregat lainnya, COUNT(ekspresi) hanya menghitung nilai-nilai bukan NULL, tetapi COUNT(*) menghitungnya banyaknya baris tanpa memandang isinya. Contohnya :
MariaDB [root93]> SELECT COUNT(*), COUNT(skor)
    -> FROM percobaan;
+----------+-------------+
| COUNT(*) | COUNT(skor) |
+----------+-------------+
|        8 |           5 |
+----------+-------------+
1 row in set (0.001 sec)
Format lain dari COUNT() dapat berguna untuk menghitung nilai yang hilang.
MariaDB [root93]> SELECT COUNT(*)-COUNT(skor)
    -> AS hilang
    -> FROM percobaan;
+--------+
| hilang |
+--------+
|      3 |
+--------+
1 row in set (0.001 sec)
Banyaknya nilai yang hilang dan tidak hilang dapat dikelompokan dengan Query seperti berikut : 

MariaDB [root93]> SELECT subjek,
    -> COUNT(*) AS n,
    -> COUNT(skor) AS 'tak-hilang',
    -> COUNT(*)-COUNT(skor) AS hilang
    -> FROM percobaan
    -> GROUP by subjek;
+--------+---+------------+--------+
| subjek | n | tak-hilang | hilang |
+--------+---+------------+--------+
| Randi  | 4 |          2 |      2 |
| Rudi   | 4 |          3 |      1 |
+--------+---+------------+--------+
2 rows in set (0.001 sec)

0 Response to "Mengambil Kesimpulan Pada Nilai NULL - MySQL Dasar #57"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin