SELECT
Statement
1. Mengelompokkan hasil query menggunakan GROUP BY
2. Mendapatkan jumlah anggota setiap kelompok menggunakan COUNT()
3. Parameter kondisional dengan HAVING
4. Mengurutkan hasil query menggunakan ORDER BY
5. Mengurutkan hasil query berdasarkan lebih dari satu kolom
6. Kombinasi ORDER BY dengan LIMIT
7. Operator BETWEEN
8. MAX, MIN, AVERAGE data dari tabel
1. Mengelompokkan
hasil query menggunakan GROUP BY
Penampilan data dikelompokkan dengan GROUP BY, data yang ditampilkan adalah
dta pertama dari kolom yang ditunjuk sebagai parameter GROP BY.
CONTOH :
mysql> select * from
pegawai GROUP BY gaji;
+----------+-----------------------+-------------+----------------+---------+
| nip | nama_peg | alamat_peg | jabatan | gaji |
+----------+-----------------------+-------------+----------------+---------+
| PEG-1015 | Paijem | Yogyakarta | Tenaga Kontrak | 500000 |
| PEG-1014 | Donny Damara |
Makasar | Tenaga Kontrak | 1000000 |
| PEG-1010 | Rano Karno |
Solo | Staff Junior | 2000000 |
| PEG-1007 | Bambang Pamungkas |
Kudus | Staff Senior | 3000000 |
| PEG-1005 | Tuti Wardani |
Jawa Tengah | Supervisor | 4500000 |
| PEG-1003 | Olga Syahputra |
Jakarta | Kepala Unit | 6000000 |
| PEG-1002 | Felix Nababan |
Medan | Manager | 8000000 |
| PEG-1001 | Soeharto Mangundirejo | Yogyakarta | C.E.O | 9000000 |
+----------+-----------------------+-------------+----------------+---------+
8 rows in set (0.41 sec)
Menunjukkan pengngelompokan data berdasarkan gaji, jika ada yang memiliki
gaji yang sama maka yang ditampilkan adalah data yang pertama, contoh Rano
Karno dan Rahmadi Sholeh sama – sama memiliki gaji 2juta tetapi karena Rano
Karno ada diatas Rahmadi maka yang ditampilkan adalah data dari Rano Karno.
2. Mendapatkan
jumlah anggota setiap kelompok menggunakan COUNT()
Perintah COUNT() ini berkaitan dengan perintah
GROUP BY, yaitu untuk mengetahui jumlah dari anggota GROUP, untuk lebih
jelasnya bisa melihat contoh :
mysql> select gaji, count(*) FROM pegawai GROUP BY gaji;
+---------+----------+
| gaji
| count(*) |
+---------+----------+
| 500000
| 1 |
| 1000000 | 1 |
| 2000000 | 4 |
| 3000000 | 3 |
| 4500000 | 2 |
| 6000000 | 2 |
| 8000000 | 1 |
| 9000000 | 1 |
+---------+----------+
8 rows in set (0.44 sec)
3.Parameter
kondisional dengan HAVING
Penggunaan HAVING sangat mirip dengan penggunaan WHERE contoh :
mysql> select * from
pegawai HAVING gaji > 6000000;
+----------+-----------------------+------------+---------+---------+
| nip | nama_peg | alamat_peg | jabatan |
gaji |
+----------+-----------------------+------------+---------+---------+
| PEG-1001 | Soeharto Mangundirejo | Yogyakarta | C.E.O | 9000000 |
| PEG-1002 | Felix Nababan |
Medan | Manager | 8000000 |
+----------+-----------------------+------------+---------+---------+
2 rows in set (0.00 sec)
Dari contoh diatas bisa terlihat jelas penggunaan HAVING dan WHERE sangat
mirip
4.Mengurutkan
hasil query menggunakan ORDER BY
Perintah ORDER BY adalah perintah untuk
mengurutkan tabel secara ASC atau DESC,
CONTOH :
mysql> select * from pegawai ORDER BY nama_peg;
+----------+-----------------------+-------------+----------------+---------+
| nip
| nama_peg |
alamat_peg | jabatan | gaji |
+----------+-----------------------+-------------+----------------+---------+
| PEG-1007 | Bambang Pamungkas | Kudus | Staff Senior | 3000000 |
| PEG-1006 | Budi Drajat | Malang | Supervisor | 4500000 |
| PEG-1004 | Chelsea Olivia | Bandung | Kepala Unit | 6000000 |
| PEG-1014 | Donny Damara | Makasar | Tenaga Kontrak | 1000000 |
| PEG-1008 | Ely Oktafiani | Yogyakarta | Staff Senior | 3000000 |
| PEG-1013 | Endang Melati | Madiun | Staff Junior | 2000000 |
| PEG-1002 | Felix Nababan | Medan | Manager | 8000000 |
| PEG-1012 | Ilham Ungara | Jakarta | Staff Junior | 2000000 |
| PEG-1003 | Olga Syahputra | Jakarta | Kepala Unit | 6000000 |
| PEG-1015 | Paijem | Yogyakarta | Tenaga Kontrak | 500000 |
| PEG-1011 | Rahmadi Sholeh | Yogyakarta | Staff Junior | 2000000 |
| PEG-1009 | Rani Wijaya | Magelang | Staff Senior | 3000000 |
| PEG-1010 | Rano Karno | Solo | Staff Junior | 2000000 |
| PEG-1001 | Soeharto Mangundirejo |
Yogyakarta | C.E.O | 9000000 |
| PEG-1005 | Tuti Wardani | Jawa Tengah | Supervisor | 4500000 |
+----------+-----------------------+-------------+----------------+---------+
15 rows in set (0.42 sec)
Jika dilihat dari perintah
diatas menunjukkan bahwa perintah ORDER BY akan diurutkan secara ASC secara default.
Untuk perintah ORDER BY secara DESC maka perintahnya sbb :
mysql> select * from pegawai ORDER BY nama_peg DESC;
+----------+-----------------------+-------------+----------------+---------+
| nip
| nama_peg |
alamat_peg | jabatan | gaji |
+----------+-----------------------+-------------+----------------+---------+
| PEG-1005 | Tuti Wardani | Jawa Tengah | Supervisor | 4500000 |
| PEG-1001 | Soeharto Mangundirejo |
Yogyakarta | C.E.O | 9000000 |
| PEG-1010 | Rano Karno | Solo | Staff Junior | 2000000 |
| PEG-1009 | Rani Wijaya | Magelang | Staff Senior | 3000000 |
| PEG-1011 | Rahmadi Sholeh | Yogyakarta | Staff Junior | 2000000 |
| PEG-1015 | Paijem | Yogyakarta | Tenaga Kontrak | 500000 |
| PEG-1003 | Olga Syahputra | Jakarta | Kepala Unit | 6000000 |
| PEG-1012 | Ilham Ungara | Jakarta | Staff Junior | 2000000 |
| PEG-1002 | Felix Nababan | Medan
| Manager | 8000000 |
| PEG-1013 | Endang Melati | Madiun | Staff Junior | 2000000 |
| PEG-1008 | Ely Oktafiani | Yogyakarta | Staff Senior | 3000000 |
| PEG-1014 | Donny Damara | Makasar | Tenaga Kontrak | 1000000 |
| PEG-1004 | Chelsea Olivia | Bandung | Kepala Unit | 6000000 |
| PEG-1006 | Budi Drajat | Malang | Supervisor | 4500000 |
| PEG-1007 | Bambang Pamungkas | Kudus | Staff Senior | 3000000 |
+----------+-----------------------+-------------+----------------+---------+
15 rows in set (0.00 sec)
5.Mengurutkan
hasil query berdasarkan lebih dari satu kolom
Pada perintah ini pengurutan data dilakukan tidak hanya berdasar 1 kolom,
tetapi berdasar 2 kolom atau lebihpun bisa.
Agar data bisa terlihat jelas maka coba buat tabel pegawai2 dengan rincian
sbb :
mysql> create table pegawai2(nama varchar(20), alamat varchar(20));
Query OK, 0 rows affected (0.47 sec)
mysql> desc pegawai2;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| nama | varchar(20) | YES | |
NULL | |
| alamat | varchar(20) | YES | | NULL
| |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.11 sec)
mysql> select*from pegawai2;
+------+------------+
| nama | alamat |
+------+------------+
| Zeze | Yogyakarta |
| Zeze | Jakarta |
| Riza | Bandung |
| Riza | Aceh |
| Amir | Demak |
| Amir | Cilacap |
+------+------------+
6 rows in set (0.00 sec)
Kita sudah punya tabel baru yang menunjukkan data pada kolom nama ada yang sama,
tapi di kolom alamat berbeda maka bisa diurutkan sbb :
mysql> select nama, alamat
from pegawai2 ORDER BY nama, alamat;
+------+------------+
| nama | alamat |
+------+------------+
| Amir | Cilacap |
| Amir | Demak |
| Riza | Aceh |
| Riza | Bandung |
| Zeze | Jakarta |
| Zeze | Yogyakarta |
+------+------------+
6 rows in set (0.00 sec)
mysql> select * from
pegawai2 ORDER BY nama, alamat desc;
+------+------------+
| nama | alamat |
+------+------------+
| Amir | Demak |
| Amir | Cilacap |
| Riza | Bandung |
| Riza | Aceh |
| Zeze | Yogyakarta |
| Zeze | Jakarta |
+------+------------+
6 rows in set (0.00 sec)
Pada tabel ini telah diurutkan nama terlebih dahulu seteleh itu baru
mengurutkan berdasarkan alamat.
6.Kombinasi
ORDER BY dengan LIMIT
Perintah ORDER BY juga bisa dikombinasikan dengan perintah LIMIT, contohnya
mysql> select * from pegawai ORDER BY gaji LIMIT 5;
+----------+----------------+------------+----------------+---------+
| nip | nama_peg | alamat_peg | jabatan | gaji |
+----------+----------------+------------+----------------+---------+
| PEG-1015 | Paijem |
Yogyakarta | Tenaga Kontrak | 500000 |
| PEG-1014 | Donny Damara |
Makasar | Tenaga Kontrak | 1000000 |
| PEG-1013 | Endang Melati |
Madiun | Staff Junior | 2000000 |
| PEG-1012 | Ilham Ungara |
Jakarta | Staff Junior | 2000000 |
| PEG-1011 | Rahmadi Sholeh | Yogyakarta | Staff Junior | 2000000 |
+----------+----------------+------------+----------------+---------+
5 rows in set (0.00 sec)
Contoh diatas menunjukkan 5 gaji terendah di table pegawai.
7.Operator
BETWEEN
Perintah BETWEEN digunakan untuk memfilter data diantara dua nilai yang
dispesifikkan
mysql> select * from
pegawai WHERE gaji BETWEEN 4000000 AND 9000000;
+----------+-----------------------+-------------+-------------+---------+
| nip | nama_peg | alamat_peg | jabatan
| gaji |
+----------+-----------------------+-------------+-------------+---------+
| PEG-1001 | Soeharto Mangundirejo | Yogyakarta | C.E.O
| 9000000 |
| PEG-1002 | Felix Nababan |
Medan | Manager | 8000000 |
| PEG-1003 | Olga Syahputra | Jakarta | Kepala Unit | 6000000 |
| PEG-1004 | Chelsea Olivia |
Bandung | Kepala Unit | 6000000 |
| PEG-1005 | Tuti Wardani |
Jawa Tengah | Supervisor | 4500000 |
| PEG-1006 | Budi Drajat |
Malang | Supervisor | 4500000 |
+----------+-----------------------+-------------+-------------+---------+
6 rows in set (0.00 sec)
Perintah diatas menunjukkan penampilan gaji
diantara 4jt dan 9jt .
Jika perintah BETWEEN dilakukan untuk mencara data dalam range, ada juga NOT BETWEEN untuk mencarai data diluar range yang
kita tentukan.
CATATAN : penginputan range
diwalai dengan urutan yang lebih kecil, contoh 4jt – 9jt, atau Ely O – Olga S
mysql> select nama_peg, gaji from pegawai WHERE nama_peg NOT BETWEEN
"Ely Oktafi
ani" AND "Olga Syahputra";
+-----------------------+---------+
| nama_peg
| gaji |
+-----------------------+---------+
| Soeharto Mangundirejo | 9000000 |
| Chelsea Olivia
| 6000000 |
| Tuti Wardani
| 4500000 |
| Budi Drajat
| 4500000 |
| Bambang Pamungkas
| 3000000 |
| Rani Wijaya
| 3000000 |
| Rano Karno
| 2000000 |
| Rahmadi Sholeh
| 2000000 |
| Donny Damara
| 1000000 |
| Paijem
| 500000 |
+-----------------------+---------+
10 rows in set (0.00 sec)
Menunjukkan hasil dari NOT
BETWEEN dalam menampilkan data yang bukan antara Ely Oktafiani dan Olga
Syahputra
8.MAX, MIN, AVERAGE data dari tabel
Perintah untuk menunjukkan
nilai maksimal atau minimal ataupun nilai rata – rata juga bisa kita lakukan di
MySQL, dengan perintah SELECT diikuti oleh MIN, MAX, atau AVERAGE, untuk lebih
jelasnya kita lihat contoh :
Mencari nilai
MINIMAL è MIN
mysql> select MIN(gaji)
from pegawai;
+-----------+
| MIN(gaji) |
+-----------+
| 500000 |
+-----------+
1 row in set (1.05 sec)
Mencari nilai
MAKSIMAL è MAX
mysql> select MAX(gaji)
from pegawai;
+-----------+
| MAX(gaji) |
+-----------+
| 9000000 |
+-----------+
1 row in set (0.00 sec)
Mencari nilai
RATA - RATA è AVG
mysql> select AVG(gaji)
from pegawai;
+--------------+
| AVG(gaji) |
+--------------+
| 3766666.6667 |
+--------------+
1 row in set (0.41 sec)
Menghitung
Nilai Total è SUM
mysql> select SUM(gaji)
from pegawai;
+-----------+
| SUM(gaji) |
+-----------+
| 56500000 |
+-----------+
1 row in set (0.39 sec)

0 komentar:
Posting Komentar