SQL
Structured Query Language
Merupakan bahasa yang digunakan untuk mengirim perintah ke
DBMS
SQL adalah bahasa yang mudah karena hanya berisi instruksi
untuk menyimpan, mengubah, menghapus atau mengambil data
melalui DBMS
Secara garis besar, semua perintah SQL di Relational Database
itu hampir sama, namun biasanya tiap DBMS ada improvement
yang membedakan hal-hal kecil dalam perintah SQL, namun
secara garis besar perintahnya tetap sama
Kenapa harus belajar SQL?
Kunjungi menti.com ya
Kenapa harus belajar SQL?
Mudah dipelajari
Terstandardisasi
Melatih kemampuan analisis
Dapat digunakan untuk membantu
dalam pengolahan data yang besar
TIPE DATA
TIPE DATA NUMBER
Tipe Data Number
Secara garis besar, tipe data number di MySQL
ada dua jenis;
Integer, atau tipe number bilangan bulat
Floating Point, atau tipe data number pecahan
Tipe Data Integer
Tipe Data Floating Point
DECIMAL
Selain Integer dan Floating Point, di MySQL terdapat tipe
data DECIMAL
Ini tipe data number khusus yang bisa ditentukan jumlah
precision dan scale nya
Kolom
Tabel
Pada suatu table bisa terdapat 3 jenis key
1) Primary Key = sebuah atau beberapa kolom yang dikelompokkan
dan secara unik mengidentifikasi row di dalam table. Tidak boleh
bernilai Null
2) Unique Key = kolom yang digunakan sebagai unik di dalam table .
Unique key bisa memiliki nilai NULL.
3) Foreign Key = kolom dalam sebuah table , yang dapat dipakai
dalam membuat relasi antara satu table dengan table lainnya.
Foreign key bukanlah primary key table tersebut, namun menjadi
primary key bagi table lainnya
Tabel
Relasi Tabel
Table WP
NPWP NAMA_WP KPP_ADMINISTRASI
123456789001000 PANTANG MUNDUR 051 Foreign Key
987654321302001 MAJU SENDIRI 605
012345678051000 MILIK BANGSA 012
876543210108002 KARYA BERSAMA 302
Tabel KPP
Primary Key
KPP NAMAKPP ALAMAT
001 KPP PRATAMA JAKARTA MATRAMAN JAKARTA
003 KPP PRATAMA JAKARTA PULOGADUNG JAKARTA
302 KPP PRATAMA BATURAJA BATURAJA
051 KPP WAJIB PAJAK BESAR TIGA JAKARTA
108 KPP PRATAMA ACEH BESAR BANDA ACEH
Primary Key
Tabel
Contoh Perintah Create Tabel di MySQL :
Template Standar Perintah
Create Tabel [Nama Tabel] (Nama Kolom Tipe Kolom)
Create table masterfile_lokakarya (
npwp varchar(15) not null,
kppadm varchar(3),
nama_wp varchar(30),
alamat_wp varchar(50),
Primary key (npwp)
);
Perintah create table juga dapat digunakan diikuti dengan perintah select dari tabel
lain, yang artinya, tabel baru yang akan dibentuk akan mengambil data dari tabel lain
yang sudah tersedia.
Tugas
Buat minimal 5 Tabel pada MySQL dengan ketentuan :
Usahakan berlatih membuat tabel dengan menggunakan
seluruh tipe data kolom
Berlatih untuk mendesain database yang terdiri dari banyak
tabel di manaprimary key dan foreign key tiap tabel dapat
saling terhubung menggunakan
Format nama tabel adalah “namatabel_namapeserta”
Pastikan Script Pembuatan tabel disimpan
Akan diminta 2 peserta untuk menjelaskan hasil dari tugas
yang dikerjakan
Tabel, lanjutan...
Apakah kita hanya bisa meng-create tabel di
MySQL ? Bisakah kita menghapus tabel?
Bisakah kita merubah kolom?
Alter
Drop
Rename
Modify
Drop dan Truncate
Tabel, lanjutan...
Alter
ADD – Contoh = “Alter Table masterfile_lokakarya add column
tgl_daftar timestamp;”
ADD- Setelah kolom tertentu = “Alter Table masterfile_lokakarya
add column tgl_lahir timestamp after nama_wp;”
ADD – Multiple Columns = “Alter Table masterfile_lokakarya add
column (kd_klu char(5), id_jns_wp tinyint);”
ADD – Multiple Columns (After)= “Alter Table
masterfile_lokakarya add column kd_klu_after char(5) after
kd_klu, add column id_jns_wp_after tinyint after id_jns_wp;”
Tabel, lanjutan...
Drop
Single Column Drop = Alter table masterfile_lokakarya drop
kd_klu_after;
Multiple Columns Drop = Alter table masterfile_lokakarya drop
kolom_awal_baru, drop id_jns_wp_after;
Rename
Rename column = Alter table masterfile_lokakarya change
column npwp npwp15 varchar(15) ;
Renama table = Alter table masterfile_lokakarya rename to
mf_lokakarya;
Tabel, lanjutan...
Modify :
Single Column = Alter table mf_lokakarya modify npwp15 char(15)
null;
Multiple Columns = Alter table mf_lokakarya modify npwp15
varchar(15) not null, modify kppadm varchar(3) null;
Tabel, lanjutan...
Drop :
Secara sederhana, peirnta drop digunakan untuk menghapus sebuah tabel
secara keseluruhan.
Contoh = Drop Table Pegawai ;
Truncate : / Delete
Perintah truncate digunakan untuk menghapus seluruh record/row/tupple di
dalam sebuah tabel dengan tetap mempertahankan struktur dari tabel
tersebut:
Contoh = Truncate table pegawai :
Delete from pegawai;
VIEW
Secara sederhana dapat diartikan sebagai “Stored Query”
Untuk membentuk View perintah yang digunakan adalah
“Create View”
Untuk mengakses view, digunakan perintah “Select”
View dapat membantu dalam menyederhanakan query
yang berulang dan kompleks
View juga membantu dalam menjaga konsistensi logika
bisnis
VIEW
Contoh Perintah :
create view v_mpn2017_kontribusibesar as
select * from mpn2017 WHERE
jml_setor>10000000000;
INDEX
Index membantu dalam mempercepat pencarian row dengan
nilai yang spesifik
Tanpa adanya Index, DBMS harus men-scan keseluruhan
tabel untuk mendapatkan row yang diinginkan
Contoh Perintah :
create index index_mpn2017 on
mpn2017 (npwp,
id_map_kjs,
id_ms_th_pjk_1);
Jenis-Jenis Perintah SQL
Dalam menjalankan perintah select kita dapat juga memasukan kondisi-kondisi pada perintah kita
yang berfungsi sebagai filter
Kondisi-kondisi yang kita inginkan dapat ditambahkan pada perintah select dengan menggunakan
klausa “WHERE”
Klausa “WHERE” memiliki letak setelah “FROM”, kemudian diikuti dengan nama kolom yang akan
difilter
Di dalam klausa where kita dapat menggunakan operator perbandingan untuk mem-filter data yang
akan ditampikan
Operator Keterangan
= Sama dengan
<> atau != Tidak sama dengan
< Kurang dari
<= Kurang dari atau sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
Latihan
1. Buat VIEW tugas1 dengan kondisi di mana jumlah setor lebih
dari 500.000.000 pada tabel mpn2020.
2. Buat table tugas_mpn2020 dari yang berasal dari data
keseluruhan data mpn2020. Kemudian, ubah Kolom NPWP
pada tabel menjadi NPWP15 dan kolom JML_SETOR menjadi
SETORAN.
3. Ubah lebar data pada tugas_mpn2020 menjadi lebih efisien,
tambahkan paling tidak 50% dari lebar data sesungguhnya.
Hints :
create table tugas_mpn2020 as select * from mpn2020
alter table tugas_mpn2020 change column NPWP NPWP15 varchar(15)
select max(length(ntpn)) from tugas_mpn2020
Latihan
1. Buat table tugas_keberatan1 dari table keberatan tanpa isi data tercopy.
(create table xxxx like yyy).
(truncate)
2. perbaiki struktur table tugas_keberatan1. termasuk semua nilai nominal
menjadi 38,2.
2. Insert data keberatan ke table tugas_keberatan1 atas nilai jml pokok
diatas 100.000. (insert into xxxx select * from yyy where jml_pokok> xxxx)
3. Insert data keberatan ke table tugas_keberatan1 atas nilai jml pokok
dibawah 100.000
4. Bandingkan jumlah row keberatan & tugas_keberatan1.
(select count(*) from xxx)
SELECT
Melakukan Operasi aritmatika pada Kolom
User dapat melakukan operasi aritmatika sederhana pada kolom yang akan
ditampilkan melalui perintah select
Operasi matematika umumnya dilakukan pada kolom-kolom yang memiliki
tipe data numeric
Contoh:
Select npwp, jml_setor, jml_setor*2 as duakalisetoran from mpn2017 limit
20;
Select npwp, jml_setor, jml_setor+1000 as setoran_seribu from mpn2017
limit 20;
SELECT DISTINCT
Penambahan klausa “DISTINCT” bertujuan untuk memberi perintah kepada
perintah select agar mengembalikan/memunculkan row-row yang unik pada
sebuah tabel
Klausa “DISTINCT” ditempatkan setelah perintah select diikuti dengan
nama-nama kolom
Contoh :
Select distinct id_map_kjs from mpn2017;
Select distinct kd_map,kd_setor from mpn2017;
Select distinct nama_jabatan from pegawai:
FUNGSI AGREGAT PADA PERINTAH SELECT
Fungsi agregat adalah fungsi yang digunakan dalam pengelompokan data.
Fungsi ini menghasilkan suatu row yang dikelompokkan dari beberapa row.
Query yang menggunakan fungsi aggregat biasanya menggunakan klausa
GROUP BY apabila perintah select digunakan untuk lebih dari 1 kolom
Yang termasuk dalam fungsi agregat adalah COUNT, SUM, MIN, MAX, dan
AVG.
FUNGSI AGREGAT PADA PERINTAH SELECT
Fungsi COUNT : Fungsi count yang digunakan berdiri sendiri biasanya digunakan
untuk menghitung jumlah row sebuah tabel. Apabila digunakan bersama dengan
kolom di dalam sebuah tabel, COUNT akan menghitung jumlah row atas sebuah
value di kolom tersebut.
Contoh : Select count(1) from mpn2017;
Select id_map_kjs, count(1) from mpn2017 group by id_map_kjs;
Fungsi SUM : Fungsi SUM digunakan untuk menjumlahkan nilai-nilai dari kolom
yang bertipe numeric ataupun sebuah ekspresi yang telah didefinisikan di dalam
perintah select.
Contoh : Select sum(jml_setor) as Total_Setoran from mpn2017;
Select npwp, sum(jml_setor) from mpn2017 group by npwp;
FUNGSI AGREGAT PADA PERINTAH SELECT
Fungsi MIN : Fungsi min digunakan untuk menampilkan nilai terkecil(minimum)
dari sebuah kolom. Berdasarkan dokumentasi MySQL, fungsi MIN dapat
menerima input dari kolom dengan tipe data numerik maupun string.
Contoh : Select min(jml_setor) as Total_Setoran from mpn2017;
Select npwp,min(jml_Setor) from mpn2017 group by npwp;
Fungsi MAX : Fungsi MAX digunakan untuk menampilkan nilai
terbesar(maksimum) dari sebuah kolom. Berdasarkan dokumentasi MySQL,
fungsi MIN dapat menerima input dari kolom dengan tipe data numerik maupun
string
Contoh : Select max(jml_setor) as Total_Setoran from mpn2017;
Select npwp,max(jml_setor) from mpn2017 group by npwp;
FUNGSI AGREGAT PADA PERINTAH SELECT
Fungsi AVG : Fungsi AVG digunakan untuk menampilkan nilai rata-rata dari
sebuah kolom.
Contoh : Select avg(jml_setor) as Total_Setoran from mpn2017;
Select npwp,avg(jml_setor) from mpn2017 group by npwp;
FUNGSI STRING PADA PERINTAH SELECT
Selain memiliki fungsi-fungsi agregat, MySQL memiliki fungsi string bawaan yang
dapat digunakan. Beberapa fungsi string yang sering digunakan adalah sebagai
berikut :
LENGTH (Menampilkan panjang karakter)
SUBSTR (men-slice sebuah string)
RIGHT (men-slice string dimulai dari kanan (akhir dari string)
LEFT (men-slice string dimulai dari kiri (awal dari string)
TRIM (menghilangkan spasi berlebih dari sebuah string)
UPPER/LOWER (uppercase/lowercase)
REPLACE (me-replace sebuah string dengan string lain)
CONCAT (menggabungkan teks)
FUNGSI STRING PADA PERINTAH SELECT
Contoh
LEN = Select length(npwp15) from tugas_mpn2020;
SUBSTR =Select substr(npwp15,1,9) from tugas_mpn2020;
RIGHT = Select right(npwp15,3) from tugas_mpn2020;
LEFT = Select left(npwp15,9) from tugas_mpn2020;
TRIM = Select trim(npwp15) from tugas_mpn2020;
UPPER/LOWER = Select lower(ntpn) from tugas_mpn2020;
REPLACE = Select replace(ntpn, ‘66A8F5B6E9CLBLCE’, ‘yes’) from tugas_mpn2020
where ntpn =‘66A8F5B6E9CLBLCE’
CONCAT = Select concat(kd_map,kd_Setor) from tugas_mpn2020 ;
KLAUSA ORDER BY PERINTAH SELECT
Klausa order by digunakan untuk mengurutkan row data yang ditampilkan
berdasarkan kolom tertentu
Apabila tidak ditentukan metode pengurutan, secara default, order by akan
melakukan pengurutan secara Ascending (dari kecil ke besar)
Klausa order by ada di posisi paling akhir dibanding klausa yang lain
Contoh = Select npwp,kppadm_Setor, jml_Setor from mpn2017 order by
jml_setor desc;
SELECT (Where) Operator Perbandingan
Berikut adalah contoh perintah select dengan kondisi menggunakan
operator perbandingan :
Select * from mpn2017 where npwp=’769622888101000’;
Select * from mpn2017 where npwp!=’769622888101000’;
Select * from mpn2017 where jml_setor<1000000000;
Select * from mpn2017 where jml_setor<=1000000000;
Select * from mpn2017 where jml_setor>1000000000;
Select * from mpn2017 where jml_setor>=1000000000;
SELECT (WHERE) DAN OPERATOR LOGIKA
Untuk menggabungkan 2 atau lebih kondisi pada klausa WHERE diperlukan
operator logika
Operator logika yang dapat digunakan di MySQL adalah AND, OR, dan NOT
Operator logika akan menampilkan hasil sesuai dengan evaluasi atas
operator Logika.
Operator AND, bernilai TRUE bila semua kondisi terpenuhi
Operator OR, bernilai TRUE bila salah satu kondisi terpenuhi
Operator NOT, bernilai TRUE apabila kondisi sama dengan False
SELECT (WHERE) DAN
OPERATOR LOGIKA ‘AND’
Contoh Syntax :
SELECT npwp, kppadm_setor, kd_map, jml_setor FROM mpn2017
WHERE kd_map = ‘411121’ AND jml_setor > 10000000;
SELECT npwp, kppadm_setor, kd_map, jml_setor FROM mpn2017
WHERE id_ms_th_pjk_1 mod 100 = 12 AND jml_setor > 100000000;
SELECT npwp, kppadm_setor, kd_map, mapjml_setor FROM mpn2017
WHERE month(tgl_setor)=12 AND jml_setor > 100000000;
2. Berapakah nilai total keberatan yang masih harus dibayar masih dalam
proses jenis keputusan untuk kpp adm 305
Gunakan sum dengan where kppadm
TAHUNPAJAK
KDMAP
KPPADM KD_SETOR
cast(ID_MS_TH_PJK/100 as
UMKM
int) = 2020
Operator Like digunakan untuk mencari pola spesifik dari sebuah nilai yang
dicari di dalam klausa WHERE
Ada dua karakter yang umum digunakan berbarengan dengan operator like,
yaitu :
Karakter persentase ( % ); dan
Karakter underscore ( _ )
Operator LIKE diapit oleh 2 tanda petik, dan dua karakter yang umum
digunakan di atas berposisi di antara 2 tanda petik.
SELECT (Where) Like
Contoh Penggunaan
Select * from pegawai where nama like ‘a%’
Select * from pegawai where nama like ‘%a’
Select * from pegawai where nama like ‘%a%’
Select * from pegawai where nama like ‘_a%’
Select * from pegawai where nama like ‘a_%’
Select * from pegawai where nama like ‘a__%’
Select * from pegawai where nama like ‘a%m’
Buat table berisi wajib pajak yang memiliki alamat di Cempaka Sari
SELECT (Where) IN
Operator IN memungkinkan kita untuk mendefinisikan lebih dari satu nilai di
dalam satu kondisi pencarian
Operator in merupakan versi ringkas dari multiple operator OR dengan
kondisi exact (bukan kombinasi OR dan like, melainkan kombinasi OR
dengan operator perbandingan “=”)
Contoh Syntax : SELECT * FROM mpn_2019 WHERE kd_map IN
('411121','411122', '411124');
SELECT (Where) BETWEEN
Operator BETWEEN akan menampilkan data yang berada di dalam range
yang telah ditentukan pada kondisi WHERE
Operator BETWEEN bersifat inklusif, di mana nilai awal dan nilai akhir
masuk ke dalam hasil akhir yang ditampilkan
Contoh Syntax :
Select * from mpn2017 where jml_setor between 1000000000 and
2000000000;
Latihan
1. Sari adalah pegawai kpp 303, kemudian mendapatkan tugas dari Kepala
Kantor KPP 303 untuk menyiapkan data masukan untuk pemberian
penghargaan kinerja AR beserta pembinaan AR.
2. Sari ditugaskan untuk menggunakan pendekatan dari pengerjaan data
pemicu yang dilakukan oleh AR untuk tahun pajak yang kemungkinan
besar akan masuk kadaluarsa penetapan (2017).
3. Siapkan data nilai pemanfaatan data pemicu oleh AR dari sisi jumlah
data yang telah digunakan (bukan nilai data) kemudian urutkan dari sisi
jumlah data. Count(*)
4. Siapkan juga dari sisi nilai data. Sum(*)
Hints
Kamus Data
1. Buat table tampungan seperti tugasmpn2020
untuk data pemicu pada KPP 303 serta th_pjk
2017 serta perhatikan kembali where condition
untuk data yang telah terpakai. Gunakan kolom
seperlunya. Nip_ar serta nilai data pemicu terpakai
1. Rahman adalah pegawai 307, mendapatkan tugas dari Kepala Seksi
Pengawasan untuk menyajikan data PBK pajak bulanan pada tahun
pembayaran pajak 2020.
2. Tugas tersebut mengharuskan Rahman untuk hanya memperhitungkan
Pbk Kirim Sekantor pada KPP 307.
3. Rahman diharuskan menyajikan data bulan terjadinya PBK, beserta
jumlah terjadinya Pbk
4. Lakukan hal yang sama untuk nilai terjadinya PBK
FUNGSI DATE PADA PERINTAH SELECT
• Contoh syntax:
• Select curdate(); tgl hari ini
• Select curtime(); waktu saat ini
• Select year(tgl_Setor) from mpn2020;
• Select month(tgl_setor) from mpn2020;
• Select monthname(tgl_setor) from mpn2020;
• Select day(tgl_setor) from mpn2020;
• Select dayname(tgl_Setor) from mpn2020;
• Select date_format(tgl_setor, ‘%d-%m-%y’) from
mpn2020;
SELECT (WHERE) DAN
OPERATOR LOGIKA ‘OR’
Contoh Syntax :
SELECT npwp, kppadm_setor, kd_map, jml_setor FROM mpn2017
WHERE kd_map = ‘411121’ OR jml_setor > 10000000;
SELECT npwp, kppadm_setor, kd_map, jml_setor FROM mpn2017
WHERE id_ms_th_pjk_1 mod 100 = 12 OR jml_setor > 100000000;
SELECT npwp, kppadm_setor, kd_map, jml_setor FROM mpn2017
WHERE month(tgl_setor)=12 OR jml_setor > 100000000;
SELECT (WHERE) DAN
OPERATOR LOGIKA ‘NOT’
Contoh Syntax :
SELECT npwp, kppadm_setor, kd_map, jml_setor FROM mpn2017
WHERE kd_map not in ('411122','411124');
SELECT DISTINCT kd_map, nm_map FROM dim_map_kjs WHERE
nm_map NOT LIKE 'PPH%';
SELECT (WHERE) IS NULL
Contoh Syntax :
SELECT npwp, kppadm_setor, jml_setor, no_spm FROM mpn_2019
WHERE no_spm IS NULL;
Bagaimana bila kita harus melakukan operasi matematika dengan value yang
memiliki nilai NULL?
Ifnull
Coalesce
SELECT HAVING
Klausa HAVING digunakan untuk membatasi hasil query yang
menggunakan fungsi agregat
Hasil dari fungsi agregat tidak dapat dibatasi dengan klausa WHERE
Posisi Klausa HAVING adalah paling akhir sebelum order by dan setelah
group by
Contoh Syntax =
SELECT kd_map, SUM(jml_setor) total_setor, AVG(jml_setor)
rata2_setoran, MAX(jml_setor) setoran_terbesar, MIN(jml_setor)
setoran_terkecil FROM mpn_2019 GROUP BY kd_map HAVING
SUM(jml_setor) < 1000000;
SELECT dengan CONDITIONAL STATEMENT
MySQL memiliki fitur yang memungkinkan kita untuk menjalankan sebuah perintah kondisional
Perintah kondisional yang ada di MySQL memiliki logika yang mirip dengan fungsi IF yang ada
pada microsoft excel
Setelah Perintah Case When, perlu ditambahkan nama kolom
Contoh Syntax :
SELECT npwp, jml_setor,
CASE
WHEN jml_setor > 100000000 THEN 'Penerimaan Besar'
WHEN jml_setor > 10000000 and jml_setor<100000000 THEN 'Penerimaan Sedang'
ELSE 'Penerimaan Cukup'
END as kategori_setoran FROM mpn_2017;
QUERY MANY TABLES
- UNION
- UNION ALL
- JOIN
- SUBQUERY/NESTED TABLE :
WITH
EXISTS
UNION clause
• Digunakan untuk menggabungkan result dari query lain.
• Jumlah kolom dan tipe kolom dari kedua output query harus sama
• Mengecek duplikasi records
• Jika tidak diperlukan, baiknya dihindari
• Contoh:
Select npwp_penjual, id_ms_th_pjk, jml_dpp from faktur2022 UNION
Select npwp_penjual, id_ms_th_pjk, jml_dpp from faktur2021
Order by id_ms_Th_pjk
UNION ALL clause
• Pada inner join data yang ditampilkan hanya data yang nilainya cocok antara table
pertama dengan table kedua.
• Sedangkan data pada table pertama yang nilainya tidak cocok dengan table kedua
maupun data pada table kedua yang nilainya tidak cocok dengan data pada table
pertama maka tidak akan ditampilkan.
• Contoh syntax :
select npwp_penjual, a.kd_jns_trx, b.nama, nama_penjual, npwp_penjual, jml_dpp
from faktur a, dbacl2_faktur2.dim_faktur_jns_trx b
where a.kd_jns_trx=b.kd_jns_trx;
SELECT dengan Left Join
• Pada left join data yang ditampilkan adalah semua data yang terdapat pada table pertama
sedangkan data dari table kedua hanya diambil data yang nilainya cocok dengan nilai data
pada table pertama saja.
• Untuk data dari table pertama yang tidak ada pasangannya pada table kedua maka data
pasangannya diisi dengan nilai NULL.
• Contoh syntax :
• SELECT npwp,
• kppadm,
• a.kd_klu,
• nm_klu
• FROM wp a
• LEFT JOIN dim_klu b ON a.KD_KLU = b.kd_klu
SELECT dengan Right Join
• Pada right join data yang ditampilkan adalah semua data yang terdapat pada table
kedua baik data tersebut ada pasangannya pada table pertama maupun tidak
• Sedangkan data dari table pertama maka yang ditampilkan hanya data yang ada
pasangannya dengan table kedua saja.
• Untuk data dari table kedua yang tidak ada pasangannya pada table pertama maka
data pasangannya diisi dengan nilai NULL.
• Contoh syntax :
• SELECT npwp,
• kppadm,
• a.kd_klu,
• nm_klu
• FROM wp a
• RIGHT JOIN dim_klu b ON a.KD_KLU = b.kd_klu
SELECT dengan Full Join
• Sedangkan pada full join semua data pada table pertama dan table kedua ditampilkan baik datanya
berpasangan maupun tidak berpasangan.
• MySQL belum mendukung perintah FULL JOIN, tapi kita bisa mengemulasinya dengan menggunakan
gabungan syntax Left join dan Right Join
• Contoh syntax :
• SELECT npwp,
• kppadm,
• a.kd_klu,
• nm_klu
• FROM wp a
• LEFT JOIN dim_klu b ON a.KD_KLU = b.kd_klu
• UNION ALL
• SELECT npwp,
• kppadm,
• a.kd_klu,
• nm_klu
• FROM wp a
• RIGHT JOIN dim_klu b ON a.KD_KLU = b.kd_klu
SUBQUERY
Subquery / Derived Table
• To avoid CREATE and DROP TABLE statements for storing retrieved information that is only
needed for one request.
• Subquery bisa berada di dalam SELECT/kolom statement, FROM statement, WHERE
statement.
• Contoh :
SELECT a.kolom, b.kolom FROM
(SELECT * FROM table1 WHERE condition) as a , tabel2 WHERE a.kolom=b.kolom;
1. Tampilkan data customer, nama digabung dalam 1 kolom/komposit, alamat, kota
dan negaranya
2. jumlah customer per negara, per kota, dan urutkan dari jumlah yang terbesar
3.Tampilkan data pembayaran yang pernah terjadi per negara
4. tampilkan data staff yang melayani pelanggan dengan performanya, yaitu
berapa payment yang berhasil diterima oleh perusahaan dari pelanggannya.
5. Tampilkan data jumlah customer yang melakukan pembayaran dan , nama
dikomposit.
SELECT dengan Exists
• Contoh syntax
CTE adalah sebuah fitur SQL untuk membuat sebuah tabel sementara.
Kegunaan CTE antara lain :
Mudah dibaca
Sebagai Pengganti view
Mempercepat query
Contoh Syntax :
With [alias] as (query)
SELECT * from [alias[
Common Table Expression (CTE)
WITH mpn17 AS
(
SELECT npwp,
kd_map,
jml_setor,
tgl_setor
FROM mpn2017
WHERE kd_setor = '300'
)
select * from mpn17
Select dengan Row dan Rank
MySQL versi 8.0 memiliki fitur analitikal baru ROW_NUMBER dan DENSE_RANK
Kedua perintah tersebut pada dasarnya memiliki struktur perintah yang sama namun
menghasilkan output berbeda
ROW_NUMBER berfungsi untuk menambahkan angka sekuen unik pada setiap row hasil query
DENSE_RANK berfungsi untuk menambahkan ranking pada setiap row hasil query, nilai yang
sama akan diberikan ranking yang sama
Kedua perintah tersebut selalu diiringi Order By
Terdapat perintah opsional Partition By untuk memecah data ke dalam data set yang lebih kecil
Kegunaan antara lain
Untuk memberikan nomor urut
Menghapus duplikasi
Mengambil data N teratas
Select dengan Row dan Rank
Contoh Syntax :
SELECT kd_Map,
SUM(jml_setor) setoran,
dense_rank() OVER (ORDER BY setoran DESC) urutan1,
row_number() OVER (ORDER BY setoran DESC) urutan2
FROM mpn2017
GROUP BY 1
Thank You!