Cara menggunakan count group by mysql

GROUP BY pernyataan berdasarkan satu atau lebih kolom dalam hasil ditetapkan menjadi kelompok-kelompok.

Dalam pengelompokan kolom kita dapat menggunakan COUNT, SUM, AVG, dan fungsi lainnya.

GROUP BY Syntax

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

contoh Demo

Contoh bab ini menggunakan struktur tabel berikut dan data, sebelum kita dapat mulai menggunakan data berikut ke dalam database.

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `employee_tbl`
-- ----------------------------
DROP TABLE IF EXISTS `employee_tbl`;
CREATE TABLE `employee_tbl` (
  `id` int(11) NOT NULL,
  `name` char(10) NOT NULL DEFAULT '',
  `date` datetime NOT NULL,
  `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `employee_tbl`
-- ----------------------------
BEGIN;
INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

Setelah impor berhasil, menjalankan pernyataan SQL berikut:

mysql> set names utf8;
mysql> SELECT * FROM employee_tbl;
+----+--------+---------------------+--------+
| id | name   | date                | singin |
+----+--------+---------------------+--------+
|  1 | 小明 | 2016-04-22 15:25:33 |      1 |
|  2 | 小王 | 2016-04-20 15:25:47 |      3 |
|  3 | 小丽 | 2016-04-19 15:26:02 |      2 |
|  4 | 小王 | 2016-04-07 15:26:14 |      4 |
|  5 | 小明 | 2016-04-11 15:26:40 |      4 |
|  6 | 小明 | 2016-04-04 15:26:54 |      2 |
+----+--------+---------------------+--------+
6 rows in set (0.00 sec)

Selanjutnya, kita menggunakan GROUP BY pernyataan untuk kelompok tabel data dengan nama, dan menghitung jumlah record untuk setiap orang:

mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
+--------+----------+
| name   | COUNT(*) |
+--------+----------+
| 小丽 |        1 |
| 小明 |        3 |
| 小王 |        2 |
+--------+----------+
3 rows in set (0.01 sec)

Gunakan DENGAN ROLLUP

DENGAN ROLLUP dapat diimplementasikan atas dasar data statistik dalam paket dan kemudian mengalami statistik yang sama (SUM, AVG, COUNT ...).

Sebagai contoh, kita akan lebih dari satu kelompok data tabel dengan nama, dan kemudian menghitung jumlah kali setiap orang yang terdaftar:

mysql> SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
+--------+--------------+
| name   | singin_count |
+--------+--------------+
| 小丽 |            2 |
| 小明 |            7 |
| 小王 |            7 |
| NULL   |           16 |
+--------+--------------+
4 rows in set (0.00 sec)

NULL menunjukkan yang merekam semua upaya login.

Kita dapat menggunakan menyatu untuk menetapkan pengganti nama nol, menyatu sintaks:

select coalesce(a,b,c);

Parameter Deskripsi :! Jika null ==, kemudian pilih b, jika b == null, kemudian pilih c, jika a = null, maka pilihlah, jika abc null, null (berarti yang) kembali.

Melanjutkan tutorial sebelumnya mengenai Penggunaan Select Distinct di MySQL, di tutorial kali ini kita akan mempelajari Penggunaan Group By di MySQL.

Group By MySQL

Perintah Group By di gunakan di dalam pernyataan Select untuk mengelompokkan data dengan nilai yang sama. Group By dapat digunakan bersama Aggregate Function COUNT(), MAX(), MIN(), SUM(), AVG()untuk mengelompokkan kumpulan nilai berdasarkan satu atau beberapa kolom.

Group By dapat menampilkan row tanpa duplikat yang mana juga dapat di lakukan menggunakan perintah Select Distinct yang telah kita pelajari di tutorial sebelumnya, namun apa perbedaannya? Mari simak pembahasan berikut.

Query Group By:

SELECT nama_kolom 
FROM nama_tabel
WHERE kondisi
GROUP BY nama_kolom
ORDER BY nama_kolom;

Kita akan latihan menggunakan perintah Group By pada tabel biodata_mahasiswadi bawah ini:

MariaDB [mahasiswa]> SELECT * FROM biodata_mahasiswa;
+--------+-----------+-----------------+-----------+-----------+
| id_mhs | nim       | nama            | jekel     | kota_asal |
+--------+-----------+-----------------+-----------+-----------+
|      1 | 191100111 | Zoe Martin      | Laki-laki | Jakarta   |
|      2 | 191100112 | Dwi Jane        | Perempuan | Jakarta   |
|      3 | 191100113 | Ayra Mysha      | Perempuan | Medan     |
|      4 | 191100114 | Azka Putra      | Laki-laki | Padang    |
|      5 | 191100115 | Tyas Miranda    | Perempuan | Padang    |
|      6 | 191100116 | Kayle Jane      | Perempuan | Padang    |
|      7 | 191100117 | Regina Rajendra | Perempuan | Padang    |
|      8 | 191100118 | Budi Utomo      | Laki-laki | Palembang |
|      9 | 191100119 | Yeni Irna       | Perempuan | Medan     |
|     10 | 191100120 | Nanda Putra     | Laki-laki | Medan     |
+--------+-----------+-----------------+-----------+-----------+
10 rows in set (0.001 sec)

Contoh Penggunaan Group By

  • Menampilkan daftar dari kota mana saja mahasiswa berasal

Perhatikan contoh berikut!

MariaDB [mahasiswa]> SELECT kota_asal FROM biodata_mahasiswa
    -> GROUP BY kota_asal;
+-----------+
| kota_asal |
+-----------+
| Jakarta   |
| Medan     |
| Padang    |
| Palembang |
+-----------+
4 rows in set (0.001 sec)

Penjelasan:

Hasil dari query di atas menjelaskan bahwa mahasiswa Unversitas A berasal dari 4 kota yang ada di Indonesia yaitu Jakarta, Medan, Padang, dan Palembang. Dengan menggunakan Group By, tampilan kota asal di kelompokkan berdasarkan nilai yang sama, sehingga memudahkan kita untuk melihat dari mana saja mahasiswa tersebut berasal.

Berbeda lagi jika kita hanya menggunakan perintah Select, pasti semua row kota asal akan di tampilkan.

  • Menampilkan jumlah mahasiswa berdasarkan kota asal

Perhatikan contoh berikut!

MariaDB [mahasiswa]> SELECT kota_asal , COUNT(id_mhs) AS total_mhs
    -> FROM biodata_mahasiswa
    -> GROUP BY kota_asal;
+-----------+-----------+
| kota_asal | total_mhs |
+-----------+-----------+
| Jakarta   |         2 |
| Medan     |         3 |
| Padang    |         4 |
| Palembang |         1 |
+-----------+-----------+
4 rows in set (0.001 sec)

Penjelasan:

Hasil dari query di atas menjelaskan bahwa mahasiswa yang berasal dari kota Jakarta ada 2 orang, dari Medan ada 3 orang, dari Padang ada 4 orang, dan dari Palembang ada 1 orang.

Catatan:
Penulisan Agregate Function contoh: COUNT() tidak mengandung spasi di antara COUNT dan tanda kurung. Jika menambahkan spasi di antaranya maka query akan error

  • Mengurutkan mahasiswa terbanyak berdasarkan kota asal dengan menambahkan perintah ORDER BY DESC.

Perhatikan contoh berikut!

MariaDB [mahasiswa]> SELECT kota_asal , COUNT(id_mhs) AS total_mhs
    -> FROM biodata_mahasiswa
    -> GROUP BY kota_asal
    -> ORDER BY total_mhs DESC;
+-----------+-----------+
| kota_asal | total_mhs |
+-----------+-----------+
| Padang    |         4 |
| Medan     |         3 |
| Jakarta   |         2 |
| Palembang |         1 |
+-----------+-----------+
4 rows in set (0.001 sec)

Penjelasan:

Hasil dari query di atas menjelaskan bahwa mahasiswa terbanyak berasal dari kota Padang sebanyak 4 orang, lalu di susul dari kota Medan sebanyak 3 orang, kemudian dari Kota Jakarta 2 orang, dan paling sedikit dari kota Palembang yaitu 1 orang.

  • Menampilkan jumlah mahasiswa Laki-laki berdasarkan kota asal dengan menambahkan Klausa WHERE.

Perhatikan contoh berikut!

MariaDB [mahasiswa]> SELECT kota_asal , COUNT(id_mhs) AS "Mhs Laki-laki"
    -> FROM biodata_mahasiswa
    -> WHERE jekel = 'Laki-laki'
    -> GROUP BY kota_asal
    -> ORDER BY "Mhs Laki-laki" DESC;
+-----------+---------------+
| kota_asal | Mhs Laki-laki |
+-----------+---------------+
| Jakarta   |             1 |
| Padang    |             1 |
| Palembang |             1 |
| Medan     |             1 |
+-----------+---------------+
4 rows in set (0.001 sec)

Penjelasan:

Hasil dari query di atas menjelaskan bahwa mahasiswa laki-laki yang berasal dari kota Jakarta ada 1 orang, dari kota Padang ada 1 orang, dari kota Palembang ada 1 orang, dan dari kota medan ada 1 orang

Kesimpulan:

  • GROUP BY dapat di gunakan bersama Aggregate Function COUNT(), MAX(), MIN(), SUM(), AVG() sedangkan Select Distinct tidak.
  • GROUP BY dapat di gunakan dengan Klausa WHERE dan ORDER BY sedangkan SELECT DISTINCT tidak.

Setelah memahami penggunaan Group BY di MySQL, pada materi selanjutnya akan kita pelajari mengenai Tabel Relationship.

Query group by untuk apa?

2. Group By SQL group by digunakan untuk menggabungkan data dengan nilai yang sama dalam daftar bidang tertentu menjadi satu data. Pernyataan SQL group by ini sering digunakan untuk fungsi agregat seperti count, max, min, sum, avg untuk mengelompokkan hasil yang ditetapkan oleh satu kolom atau lebih.

Apa itu Count di MySQL?

SQL Count() digunakan untuk menampilkan banyaknya data (record) sesuai dengan kriteria tertentu.

Apa perbedaan group by dan ORDER BY?

Jawaban. Jawaban: ORDER BY mengubah urutan pengembalian barang. GROUP BY akan menggabungkan catatan dengan kolom yang ditentukan yang memungkinkan Anda untuk melakukan fungsi agregasi pada kolom yang tidak dikelompokkan (seperti SUM, COUNT, AVG, dll).

Apa fungsi dari sintaks ORDER BY?

Klausul ORDER BY dalam Access mengurutkan data hasil kueri di bidang tertentu pada urutan naik atau turun.