SQL 03 - Restricting & Sorting Data
SQL 03 - Restricting & Sorting Data
com
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.
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
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 (record) yang memiliki karakter e di tengah
7.
PART 2
select 'Gaji ' || First_name || ' adalah ' || salary from employees
select 'Gaji ' || First_name || ' adalah ' || to_char(salary) from employees
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
GENERAL FUNCTIONS
Fungsi-Fungsi yang berkaitan dengan berbagai tipe data mengenai nilai Null. NVL (expr1, expr2) Jika Expr1 bukan Null, maka Output berupa Expr1 Jika Expr1 bernilai Null, maka Output berupa Expr2 NVL2 (expr1, expr2, expr3) Jika Expr1 bukan Null, maka Output berupa Expr2 Jika Expr1 bernilai Null, maka Output berupa Expr3 NULLIF (expr1, expr2) Jika Expr1 = Expr2, maka Output berupa Null Jika Expr1 Expr2, maka Output berupa Expr1 COALESCE (expr1, expr2, ..., exprn) 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%';
Latihan : 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.
Latihan : 2. 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
3) 4) 5)
6) 7)
9)
10)
Menampilkan employee_id, last_name, salary dan salary dikalikan 20% dengan nama kolom Gaji Baru Apakah statement SELECT berikut ini dapat dijalankan dgn benar? SQL>SELECT last_name,job_id,salary as sal FROM EMPLOYEES; Jelaskan kesalahan2 pada statement SELECT berikut
Next :