Menyimpulkan dengan COUNT - MySQL Dasar #51

Sebelumnya sebagai informasi awal bahwa pada chapter ini kita akan belajar dengan menggunakan tabel seperti daftar_supir dan mail yang sudah pernah dibuat pada chapter sebelumnya, dan pada chapter ini kita akan menggunakan/membuat tabel propinsi sebagai sarana untuk latihan yang mungkin akan sering digunakan pada chapter query menghasilkan kesimpulan

Daftar isi : Menghasilkan Kesimpulan - MySQL Dasar

MariaDB [root93]> CREATE TABLE propinsi
    -> (
    -> nama VARCHAR(50),
    -> singkatan VARCHAR(10),
    -> pendirian VARCHAR(25),
    -> populasi BIGINT
    -> );
Query OK, 0 rows affected (0.30 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Banda Aceh','ACH','1899-12-12',746389);
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Sumatera Utara','SUMUT','1919-04-3',15746389);
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Sumatera Barat','SUMBAR','1719-05-25',107383746);
Query OK, 1 row affected (0.08 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Kepulauan Riau','KEPRI','1998-08-21',1257333);
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Bangka Belitung','BABEL','1999-09-29',2333998);
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Riau','RIAU','1835-04-13',7383635);
Query OK, 1 row affected (0.03 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Bengkulu','BENG','1921-08-17',4573848);
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Sumatera Selatan','SUMSEL','1835-10-30',12888997);
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Lampung','LAMP','1822-08-31',11783823);
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Banten','BAN','2001-08-22',15783675);
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Jawa Barat','JABAR','1911-09-27',25783436);
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Jawa Tengah','JATENG','1912-11-23',24753566);
Query OK, 1 row affected (0.03 sec)

MariaDB [root93]> INSERT INTO propinsi(nama, singkatan, pendirian, populasi) VALUES('Jawa Timur','JATIM','1913-12-24',24889569);
Query OK, 1 row affected (0.02 sec)

MariaDB [root93]>

Pada MySQL, count() merupakan fungsi yang digunakan untuk menghitung jumlah baris pada sebuah tabel atau dengan tambahan klausa WHERE, count dapat menampilkan jumlah baris dengan kriteria tertentu.

Untuk menghitung berapa jumlah rekaman yang terdapat pada sebuah tabel, Anda bisa menggunakan parameter perintah seperti berikut :

MariaDB [root93]> SELECT COUNT(*) FROM daftar_supir;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+
1 row in set (0.00 sec)

MariaDB [root93]> SELECT COUNT(*) FROM propinsi;
+----------+
| COUNT(*) |
+----------+
|       13 |
+----------+
1 row in set (0.02 sec)

MariaDB [root93]>

Kemudian dengan tambahan klausa WHERE, Anda juga bisa mengetahui berapa kali supir yang berkendara lebih dari 300KM dalam sehari

MariaDB [root93]> SELECT COUNT(*) FROM daftar_supir
    -> WHERE km>300;
+----------+
| COUNT(*) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

atau juga bisa berdasarkan parameter nama supir tertentu

MariaDB [root93]> SELECT COUNT(*) FROM daftar_supir
    -> WHERE nama='Henry';
+----------+
| COUNT(*) |
+----------+
|        4 |
+----------+
1 row in set (0.00 sec)

Contoh lainnya, kita juga bisa mengetahui berapa banyak propinsi pada tabel propini yang didirikan pada awal abad ke-20 seperti berikut

MariaDB [root93]> SELECT COUNT(*) FROM propinsi
    -> WHERE pendirian <'1900-01-01';
+----------+
| COUNT(*) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

atau berapa banyak propinsi yang berdiri pada abad ke-19 :

MariaDB [root93]> SELECT COUNT(*) FROM propinsi
    -> WHERE pendirian BETWEEN '1800-01-01' AND '1899-12-31';
+----------+
| COUNT(*) |
+----------+
|        4 |
+----------+
1 row in set (0.00 sec)

MariaDB [root93]>

Kemudian Anda juga bisa menampilkan berapa jumlah perjalanan yang sudah dilakukan oleh setiap supir dengan tambahan kalusa GROUP BY seperti berikut :

MariaDB [root93]> SELECT nama, COUNT(id_rek) AS jml FROM daftar_supir GROUP BY nama;
+-------+-----+
| nama  | jml |
+-------+-----+
| Ben   |   2 |
| Henri |   1 |
| Henry |   4 |
| Susi  |   2 |
+-------+-----+
4 rows in set (0.00 sec)

Selanjutnya Untuk mengetahui berapa jumlah supir yang terbanyak melakukan perjalanan lalu mengurutkannya berdasarkan dari jumlah terbanyak ke tersedikit (pengurutan menurun) Anda bisa menggunakan klausa pengurutan ORDER BY

MariaDB [root93]> SELECT nama, COUNT(id_rek) AS jml FROM daftar_supir GROUP BY nama ORDER by jml DESC;
+-------+-----+
| nama  | jml |
+-------+-----+
| Henry |   4 |
| Ben   |   2 |
| Susi  |   2 |
| Henri |   1 |
+-------+-----+
4 rows in set (0.00 sec)

COUNT(ekspresi) tidak menghitung nilai NULL dan hal tersebut berguna untuk melakukan beberapa perhitungan dari himpunan nilai yang sama. Untuk menghitung jumlah perjalanan pada hari Sabtu dan Minggu pada tabel daftar_supir, Anda bisa menggunakan query seperti berikut

Baca juga : Mendekomposisi Tanggal dan Waktu atau Ektraksi Komponen

MariaDB [root93]> SELECT tanggal_travel,
    -> COUNT(IF(DAYOFWEEK(tanggal_travel)=7,1,NULL)) AS 'perjalanan sabtu'
    -> FROM daftar_supir
    -> GROUP BY tanggal_travel;
+----------------+------------------+
| tanggal_travel | perjalanan sabtu |
+----------------+------------------+
| 2014-11-26     |                0 |
| 2014-11-27     |                0 |
| 2014-11-29     |                3 |
| 2014-11-30     |                0 |
| 2014-12-01     |                0 |
| 2014-12-02     |                0 |
+----------------+------------------+
6 rows in set (0.00 sec)

MariaDB [root93]> SELECT
    -> COUNT(IF(DAYOFWEEK(tanggal_travel)=7,1,NULL)) AS 'perjalanan sabtu'
    -> COUNT(IF(DAYOFWEEK(tanggal_travel)=1,1,NULL)) AS 'perjalanan minggu'
    -> \c
MariaDB [root93]> SELECT
    -> COUNT(IF(DAYOFWEEK(tanggal_travel)=7,1,NULL)) AS 'perjalanan sabtu',
    -> COUNT(IF(DAYOFWEEK(tanggal_travel)=1,1,NULL)) AS 'perjalanan minggu'
    -> FROM daftar_supir;
+------------------+-------------------+
| perjalanan sabtu | perjalanan minggu |
+------------------+-------------------+
|                3 |                 1 |
+------------------+-------------------+
1 row in set (0.00 sec)

atau untuk menghitung akhir pekan versus hari kerja

MariaDB [root93]> SELECT
    -> COUNT(IF(DAYOFWEEK(tanggal_travel) IN(1,7),1,NULL)) AS 'Akhir Pekan',
    -> COUNT(IF(DAYOFWEEK(tanggal_travel) IN(1,7),NULL,1)) AS 'Hari Kerja'
    -> FROM daftar_supir;
+-------------+------------+
| Akhir Pekan | Hari Kerja |
+-------------+------------+
|           4 |          5 |
+-------------+------------+
                1 row in set (0.00 sec)

Selanjutnya : Menyimpulkan dengan MIN dan MAX - MySQL Dasar #52