SQL 04 - Using Single Row Function To Customize
SQL 04 - Using Single Row Function To Customize
com
Tujuan Pembelajaran
What we learn :
a)
PART 1
Menjelaskan berbagai jenis fungsi yang tersedia dalam SQL Dapat menggunakan karakter, jumlah, dan fungsi dalam SELECT Dapat menjelaskan fungsi konversi
SQL Function Single Row Function Practice Single Row Function Practice
b)
PART II
c)
PART 1
SQL FUNCTION
Single-row function : tiap record menghasilkan satu output Multiple-row function : Beberapa record menghasilkan satu output
Melakukan perhitungan Merubah data item Manipulasi hasil untuk sekelompok baris Memformat tampilan tanggal dan angka Merubah tipe data dari suatu kolom.
BACK
Function_name merupakan nama dari fungsi yang akan digunakan Arg1, arg2 merupakan argument yang digunakan oleh fungsi. Bagian ini dapat direpresentasikan dalam bentuk nama kolom atau ekspresi.
Isi dari argument dapat berupa : konstanta yang dideklarasikan oleh user, nilai variabel, nama kolom atau ekspresi.
General
Number
Conversion
Date
Fungsi CHARACTER
Fungsi karakter menerima input berupa karakter dan mengembalikan nilai yang bisa berupa karakter maupun angka. Fungsi karakter dibagi menjadi 2 kelompok yaitu :
Case-manipulation functions
berguna untuk mengubah karakter dari huruf kecil ke huruf besar atau sebaliknya digunakan untuk memanipulasi karakter, misal menggabungkan karakter, mengambil sebagian karakter dari sebuah kalimat, serta mengetahui panjang dari sebuah kalimat.
Character-manipulation functions
BACK
RPAD(column|expressions, n, string)
Menambahkan karakter tertentu disebelah kanan suatu kalimat, sehingga panjang kalimat menjadi n.
Length (kolom/ekspresi)
Kelompok
Kegunaan
Mencari ekpresi teks dari sebuah string dan menggantinya dgn string_pengganti memungkinkan untuk melakukan trim karakter yang berada depan (leading) maupun yang di belakang (trailing). Jika trim_character atau trim_source adalah karakter literal, keduanya harus diapit dengan tanda petik tunggal.
Select first_name, last_name, concat(first_name,last_name), substr(first_name,2,3), length(last_name) ,instr(first_name, 'a') from employees;
Select last_name, replace(last_name, 'e', 'o'), trim('a' from last_name) from employees;
Select last_name, replace(last_name, 'e', 'o') GANTI, trim('a' from last_name) HAPUS from employees;
BACK
Fungsi NUMBER
Fungsi NUMBER
Kelompok Fungsi Kegunaan Membulatkan suatu nilai sampai n desimal. Jika n tidak disebutkan, berarti tidak ada nilai desimal, jika n bernilai negatif berarti dibulatkan kekiri sesuai dengan nilai n
ROUND(column|expression, n)
Memotong suatu nilai sampai n desimal. Jika n tidak disebutkan, maka n bernilai 0. Jika n bernilai negatif berarti dibulatkan kekiri sesuai dengan nilai n
Mencari nilai sisa dari m dibagi n
MOD(m, n)
SELECT Job_id, last_name, salary, MOD(salary, 5000) FROM employees WHERE job_id = 'SA_REP';
BACK
Fungsi DATE
Oracle database menyimpan tanggal dalam format angka yang terdiri dari: abad, tahun, bulan, tgl, jam, menit dan detik, nilai tanggal yang dapat disimpan oleh Oracle adalah antara 1 Januari 4712 SM sampai 31 Desember 9999. Sedangkan untuk tampilan defaultnya menggunakan format DD-MON-RR, yang berarti menampilkan 2 digit angka yang menunjukkan tanggal, kemudian 3 digit karakter terdepan dari nama bulan, dan 2 digit terakhir dari tahun. Meskipun saat ditampilkan tahunnya hanya terdiri dari dua digit, tetapi pada penyimpanannya tetap 4 digit, dimana 2 digit terdepan menunjukkan abad dan 2 digit berikutnya menunjukkan tahun.
Fungsi DATE
Oracle mengenali format tanggal dimana tahun yang dituliskan dua digit akan dikenali seperti berikut ini: Untuk tahun sistem yg berlaku 0 49, maka dua digit tahun pada tanggal berkisar 0-49, dimaknai tahun pada abad sama dengan abad tahun sistem berkisar 50-99, dimaknai tahun pada abad sebelum abad tahun sistem Untuk tahun sistem yg berlaku 50 99, maka jika dua digit tahun pada tanggal berkisar 0-49, dimaknai tahun pada abad setelah abad thn sistem berkisar 50-99, dimaknai tahun pada abad sama dengan abad tahun sistem
Fungsi DATE
Jika Tahun Sistem yang berlaku misalnya 1999, maka perintah yang sama dengan Contoh sebelumnya akan menghasilkan makna thn sebagai berikut
Thn sistem 1999 (50-99) abad 2000, maka Thn 88 (50-99) adalah Tahun 1988 (abad 2000)
Thn sistem 1999 (50-99) abad 1900, maka Thn 05 (049) adalah Tahun 2005 (abad 2001)
Fungsi DATE
Untuk menampilkan tanggal dan waktu dari database server digunakan fungsi SYSDATE. Fungsi SYSDATE digunakan sebagaimana nama kolom pada perintah SELECT.
SYSDATE
Untuk memanipulasi data bertipe tanggal, selain menggunakan operasi aritmatik, juga bisa memanfaatkan fungsi tanggal. Semua fungsi tanggal akan menghasilkan data bertipe tanggal, kecuali fungsi MONTHS_BETWEEN yang menghasilkan angka.
SELECT hire_date, hire_date+2, hire_date-2, Round((Sysdate - hire_date) / 7,2) AS WEEKS, hire_date + 90/24 FROM employees ;
BACK c
4)
5)
Tuliskan perintah dalam SQL untuk menampilkan hire_date, menampilkan gabungan first_name dan last_name dimana first_name dalam huruf kecil, dan last_name dalam huruf kapital dari tabel Employees untuk baris (record) yang memiliki hire_date diantara 2-Feb1980 s/d 2-Feb-1990. Tuliskan perintah dalam SQL untuk menampilkan first_name, dua huruf pertama dari Job_id, panjang karakter pada Email dari tabel Employees untuk baris BACK (record) yang memiliki karakter e di tengah
7.
PART 2
Conversion Functions
Fungsi konversi digunakan untuk mengubah tipe data menjadi tipe data yang lain.
Tanpa menggunakan fungsi konversi, Oracle secara otomatis akan mengubah suatu tipe data menjadi tipe data yang sesuai, fasilitas ini disebut dengan Implicit Data Type Conversion.
select 'Gaji ' || First_name || ' adalah ' || salary from employees;
BACK
Meskipun secara otomatis Oracle mengubah data secara implisit, tetap dianjurkan untuk mengubah tipe data secara eksplisit, agar kinerja Oracle tetap baik. Explisit Data Type Conversation akan mengubah NUMBER menjadi CHARACTER, dan CHARACTER menjadi DATE serta sebaliknya.
Format model
harus dituliskan dengan menggunakan tanda petik tunggal, casesensitive, dapat diisi dengan format tanggal yang valid.
Antara tanggal dan format tanggal harus dipisahkan dengan tanda koma. Secara otomatis nama hari dan nama bulan ditambahkan dengan spasi, untuk menghilangkan spasi dapat digunakan mode fm.
Menampilkan data 0011001 yang semula bertipe String menjadi bertipe Number(numeric).
Menampilkan nama dan email pegawai yang bekerja mulai tahun 3 Januari 1990.
SELECT first_name || ' ' || TO_CHAR(hire_date, 'DD Month YYYY'), TO_CHAR(hire_date, 'DD Mon Year') AS HIREDATE1, TO_CHAR(hire_date, 'Day') AS HIREDATE2, TO_CHAR(hire_date, 'DY DD-MM-YY') AS HIREDATE3 FROM employees;
SELECT first_name || ' ' || TO_CHAR(salary, '$99,999.00'), TO_CHAR(salary, '$00,000.00') FROM employees;
BACK
General Functions
Fungsi
Fungsi yang digunakan untuk menangani nilai NULL ( NVL, NVL2, NULLIF, COALESCE) Fungsi yang merupakan EKSPRESI KONDISI.
Jika Expr1 bukan Null, maka Output berupa Expr1 FUNGSI KETERANGAN Jika Expr1 bernilai Null, maka Output berupa Expr2
NVL(expr1, expr2) Mengubah nilai NULL menjadi suatu nilai tertentu NVL2 (expr1, expr2,exp3) NVL2(expr1, expr2, expr3) Jika expr1 tidak bernilai NULL, maka expr2 Jika Expr1 bukan Null, maka Output berupajika Expr2 akan ditampilkan, expr1 bernilai NULL, maka expr3 Output yang ditampilkan. Jika Expr1 bernilai Null, maka berupa Expr3 NULLIF(expr1, expr2) NULLIF (expr1, Membandingkan nilai dari expr1 dan expr2, jika nilai expr1 = expr 2, maka hasilnya adalah NULL. Jika Expr1 = Expr2, maka Output Null maka expr1 yang Jika expr1berupa <> expr2, ditampilkan. Jika Expr1 Expr2, maka Output berupa Expr1 COALESCE(expr1, expr2, ..., Menampilkan ekspresi pertama yang tidak bernilai COALESCE (expr1, expr2, , exprn ) exprn) NULL
expr2)
Jika Expr1 , Expr2, Exprn-1 semuanya Null, maka Output adl Exprn Sebaliknya, maka Output berupa salah satu Expr1, Expr2, . Exprn-1 yang tidak null (diprioritaskan Expr yang terkiri)
SELECT department_id, last_name, salary, commission_pct KOMISI, manager_id, length(first_name), length(last_name), NVL(commission_pct,0) AS KOMISI_1,NVL2(commission_pct,Commission_pct, 0) AS KOMISI_2, NVL2(commission_pct,Salary + Salary * Commission_pct, Salary) INCOME, NULLIF(LENGTH(first_name), LENGTH(last_name)) AS RESULT_1, COALESCE(manager_id, commission_pct, -1) AS RESULT_2 FROM employees where Last_Name like '%K%' or Last_Name like '%L%';
BACK
Ekspresi Kondisi
CASE DECODE
Ekspresi CASE
Pada ekspresi CASE, Oracle akan membandingkan apakah ada nilai yang sesuai antara expr dan comparison_expr. Apabila ada nilai yang sama maka hasilnya adalah return_expr dari pasangan WHEN ... THEN yang sesuai. Apabila tidak ada nilai yang sama, maka hasilnya adalah else_expr jika ada kalimat ELSE, jika kalimat ELSE tidak ada maka hasilnya adalah NULL. Nilai dari semua return_expr dan else_expr tidak boleh NULL, selain itu semua ekspresi pada CASE harus sama tipe datanya.
Fungsi DECODE
Fasilitas yang hampir sama fungsinya dengan CASE adalah DECODE. Fungsi DECODE dituliskan dengan format :
Sama dengan fungsi IF-THEN-ELSE pada umumnya, fungsi DECODE akan membandingkan nilai col atau expression dengan nilai dari setiap search, apabila nilainya sama maka hasilnya adalah result, tetapi jika tidak ada nilai yang sama, maka yang dikembalikan adalah nilai default, dan apabila nilai default tidak didefinisikan maka hasilnya adalah NULL.
1.
Tuliskan query untuk menampilkan manager_id, menampilkan hire_date dalam format seperti 17/Jun/99 lalu digabungkan dengan Email (dalam huruf kecil), menampilkan salary dalam format seperti Rp. 07,000 dari tabel employees untuk baris (record) yang memiliki manager_id bukan 100,102 , dan memiliki Email yang mengandung huruf K di awal Email.
Tuliskan perintah dalam SQL untuk menampilkan employee_id, first_name, salary, job_id, bonus dengan ketentuan sebagai berikut: Untuk dua huruf pertama dari Job_id jika bernilai IT diberi bonus = 10% x salary AD diberi bonus = 20% x salary Selain IT dan AD diberi bonus = 0 dari tabel employees untuk baris (record) yang memiliki employee_id < 110
Next :