SQL Queries — Part I
Ulasan sebelumnya tentang Dasar-Dasar SQL untuk Data Analyst telah membahas query sederhana yang biasa digunakan untuk menarik data dari database. Perintah-perintah seperti SELECT, FROM, WHERE, serta ORDER BY hampir selalu digunakan dalam penarikan data. Namun, dalam penggunaannya keempat perintah diatas masih bisa dikombinasikan dengan perintah lain untuk memperoleh data yang spesifik.
Ulasan kali ini akan membahas tentang (1) Filtering, yang merupakan mengembangan perintah WHERE dengan operasi matematika, operasi logikal, BETWEEN, IN, dan LIKE. (2) Anggegation yang memanfaatkan perintah COUNT, MIN, MAX, AVG, serta SUM. (3) Grouping dengan memanfaatkan perintah GROUP BY. Serta (4) Conditional Statement yang merupakan pengembangan perintah SELECT menggunakan syntax CASE.
A. FILTERING
Perintah WHERE berfungsi untuk memfilter data yang akan diambil. Dalam penggunaanya perintah WHERE biasa dikombinasikan dengan operasi matematika (=, !=, >, ≥, <, ≤), operasi logika (AND, OR, NOT), BETWEEN, IN, dan LIKE. Berikut contoh penggunaannya:
- Operasi Matematika
a. Sama dengan (=)
Digunakan untuk memfilter data dengan nilai tertentu. Misalnya ingin mengambil data pelanggan yang berusia 25 tahun, atau pelanggan yang berasal dari kota Miami. Berikut contoh penggunaannya:
b. Tidak sama dengan (!= atau <>)
Lawan dari sama dengan adalah tidak sama dengan. Digunakan untuk mengambil data dengan mengecualikan nilai tertentu. Misalnya mengambil data yang tidak berasal dari West region.
c. Lebih dari (>) dan Kurang dari(<)
Opeator = dan != bisa digunakan untuk semua tipe data. Tetapi untuk lebih dari (>) dan kurang dari (<) khusus untuk data yang mempunyai urutan seperti data numerik dan date time.
Misalnya kita ingin mencari data pelanggan yang berusia lebih dari 50 tahun.
Selanjutnya ketika kita ingin mengetahui data penjualan sebelum tanggal ‘2016–11–11’. Maka syntaxnya seperti berikut ini:
d. Lebih dari sama dengan (≥) dan Kurang dari sama dengan (≤)
Sama dengan operator sebelumnya, tetapi juga memasukkan nilai yang diberikan. Sesuai dengan namanya, lebih dari sama dengan dan kurang dari sama dengan.
Misalnya ketika mencari data dengan usia kurang dari sama dengan 20 tahun. Maka pelanggan dengan usai 20 tahun juga diikutkan. Seperti contoh berikut:
2. Operasi Logika
a. AND
Ketika ingin mengambil data dengan dua atau lebih kriteria yang harus diepnuhi maka kita bisa memanfaatkan operator logika AND. Karena AND hanya akan mengembalikan data yang sesuai dengan kedua kriteria yang diberikan. Misalnya ketika ingin mencari data pelanggan yang berusia 25 tahun dan berasal dari ‘West’ region. Maka data yang ditampilkan hanya yang memenuhi kedua kriteria tersebut.
b. OR
Berderbeda dengan AND, operator logika OR akan mengambil data yang sesuai dengan salah satu kriteria yang diberikan. Tidak harus semua kriteria harus dipenuhi, tetapi cukup satu kriteria saja.
Kita pakai contoh yang sama dengan yang diatas tetapi operator AND diubah dengan OR, maka hasilnya sebagai berikut:
Pada contoh diatas kita memberikan syarat usia 25 tahun atau west region. Data 1–10 ditampilkan karena region = ‘West’, walaupun usianya tidak 25 tahun. Sedangkan pada data nomor 11 ditampilkam karena memiliki usia 25 tahun, walaupun regionnya ‘South’.
c. NOT
Operator NOT hampir sama dengan penggunaan tidak sama dengan (!=), namun NOT bisa dikombinasikan dengan operator yang lain seperti NOT LIKE yang akan kita bahas selanjutnya.
Contoh diatas menunjukkan data dengan usia 69 tidak diikutkan, terlihat setelah usia 70 langsung 68.
3. BETWEEN
Operator BETWEEN mengembalikan nilai pada rentang tertentu. Seperti pada rentang usia 20–30 tahun, penjulan pada bulan Januari-April, dan lain sebagainya. Fungsi BETWEEN mirip dengan penggunaan operator AND dengan dua kriteria, namun pada BETWEEN syntaxnya lebih ringkas dan mudah dipahami. Perhatikan contoh berikut:
4. IN
Operator IN mengembalikan nilai yang sesuai dengan list atau daftar nilai yang diberikan. IN mirip dengan OR, cukup satu dari banyak kriteria yang memenuhi untuk menarik data. IN juga bisa digunakan untuk memfilter data dengan tipe teks. Berikut contoh pengambilan data dengan kriteria city = Milwaukee, San Antonio, Las Vegas.
5. LIKE
LIKE digunakan untuk memfilter kolom dengan menggunakan karakter untuk mengambil pola tertentu. LIKE biasa dikombinasikan dengan simbol persen (%) dan garis bawah (_).
Tanda persen digunakan untuk mengambil ‘semua data’.
‘V%’ = mengembalikan semua data yang diawali dengan huruf ‘V’
‘%m’ = mengembalikan semua data yang diakhiri dengan huruf ‘m’
‘%land%’ = mengembalikan semua data yang terdapat huruf ‘land’ dimanapun posisinya. Misalnya Portland dengan land diakhir dan Redlands dengan land ditengah.
Tanda garis bawah (_) menunjukkan satu karakter kosong. Misalnya ingin mencari daftar nama customer yang memiliki huruf kedua = ‘h’, maka syntaxnya seperti ini ‘_h%’. Contoh dibawah menunjukkan data dengan nama Christopher, Philip, Chad, Shirley, dan lain-lain.
B. AGGREGATION AND GROUPING
Aggregation digunakan untuk mengakumulasi atau merangkum data. Sedangkan Grouping digunakan untuk mengelompokkan berdasarkan kolom tertentu. Aggregation menggunakan perintah COUNT, SUM, AVG, MIN, dan MAX. Grouping memanfaatkan syntax GROUP BY dan HAVING.
a. COUNT
Berfungsi untuk menghitung jumlah baris pada suatu kolom. Penggunaan COUNT bisa dikombinasikan dengan simbol asterik COUNT(*) yang artinya menghitung semua baris dan semua kolom, COUNT(1) untuk menghitung jumlah baris pada kolom pertama, atau menuliskan nama kolom secara spesifik. Misalnya menghitung jumlah baris pada kolom order_line:
Fungsi aggregation akan membentuk kolom baru sesuai dengan fungsi anggegasi yang digunakan. Pada contoh diatas nama kolomnya menjadi count. Agar lebih mudah dipahami bisa kita ubah nama kolomnya dengan menggunakan fungsi Alias (AS), seperti contoh berikut:
COUNT bisa dikombinasikan dengan DISTINCT untuk memperoleh nilai unik pada suatu kolom. Misalnya kita ingin mengetahui ada berapa nilai unik pada kolom ship_mode, maka syntaxnya sebagai berikut:
Dari contoh diatas dapat diketahui bahwa jumlah baris pada kolom ship_mode ada 9994 baris, namun hanya memiliki 4 data unik saja.
b. SUM
Berfungsi untuk menjumlahkan nilai dari suatu kolom tertentu.
c. AVG
Berfungsi untuk mendapatkan nilai rata-rata dari suatu kolom tertentu.
d. MIN
Berfungsi untuk mendapatkan nilai minimum dari suatu kolom tertentu
e. MAX
Berfungsi untuk mendapatkan nilai maksimum dari suatu kolom tertentu
f. GROUP BY
Berfungsi untuk mengelompokkan data berdasarkan kriteria tertentu. Misalnya ingin mengetahui jumlah minimal, maksimal, rata-rata, dan jumlah profit setiap harinya. Maka kita melakukan aggregasi untuk setiap kolomnya, kemudian dikelompokkan berdasarkan tanggal. Perhatikan contoh berikut:
g. HAVING
Ketika data sudah diaggregasi dan dikelompokkan dengan perintah GROUP BY kita tidak bisa lagi menggunakan perintah WHERE untuk memfilter data. Disinilah fungsi HAVING yang bisa digunakan untuk melakukan filter terhadap hasil akumulasi yang telah dilakukan aggregasi.
Pada contoh sebelumnya data dianggregasi dan dikelompokkan sesuai tanggal. Kemudian kita ingin melihat hari dimana profit lebih dari 1000. Maka syntaxnya sebagai berikut:
C. CONDITIONAL STATEMENT
Conditional Statement berfungsi untuk membuat kolom baru dengan kondisi dari suatu kolom. Penggunaanya mirip dengan fungsi if/else pada bahasa memrograman lainnya.
Misalnya kita ingin membuat kolom baru bernama age_group yang mengelompokkan customer berdasarkan usia. Tim ingin mengelompokkan kedalam tiga kelompok usia, yaitu: Young-Adults (17–30 tahun), Middle-Age (31–45 tahun), dan Senior ( > 45 tahun). Maka perintahnya sebagai berikut.
Demikian ulasan mengenai SQL Queries — Part I. Pembahasan materi lainnya akan saya ulas pada kesempatan selanjutnya.
Sila dibaca dan dibagikan. Semoga bermanfaat