Anda di halaman 1dari 8

Pembuatan tabel.

CREATE TABLE JURUSAN_012(

ID_JURUSAN SMALLINT NOT NULL,

ID_FAKULTAS SMALLINT REFERENCES FAKULTAS_012 (ID_FAKULTAS),

JURUSAN VARCHAR(60),

PRIMARY KEY(ID_JURUSAN)

);

1. Tampilkan empno, nama pegawai, job, workdept dari pegawai yang bekerja pada workdept
D11 dan memiliki nama berawalan 'M'
SELECT EMPNO, FIRSTNME, LASTNAME, JOB, WORKDEPT FROM EMPLOYEE WHERE
WORKDEPT = 'D11' and FIRSTNME like 'M%';

2. Tampilkan empno, nama depan, nama belakang, job, usia (tanggal lahir dikurangi tanggal
sekarang) dari pegawai yang memiliki nama job berakhiran 'R'
SELECT EMPNO, FIRSTNME, LASTNAME, JOB, YEAR(current date - BIRTHDATE) as
"USIA" FROM EMPLOYEE WHERE JOB LIKE '%R';

3. Buat tabel dengan nama DEPT_COPY3digitnimterakhir yang memiliki struktur sama


dengan table DEPARTMENT. Kemudian ubah tipe data DEPTNO menjadi SMALLINT dan
generate kolom DEPTNO menjadi ALWAYS INCREMENT BY 1, DEPTNO pertama adalah
11001.

drop table dept_copy3012;

create table dept_copy012(

deptno smallint not null

generated always as identity(

start with 11001,increment by 1),

deptname varchar(36),

admrdept char(3),

location char(16),

mgrno char(6)

);

4. Memasukan data ke dalam table


INSERT INTO dept_copy012 (deptname, admrdept)
values ('WEREHOUSE', 'a00')

5. Ubah nama department HRD menjadi HUMAN RESOURCE DEPARTMENT.


(Tampilkan isi tabel)
update dept_copy012
SET deptname = 'human resource department'

where deptno = 11004

6. Hapus data department yang memiliki ADMRDEPT = A00. (Tampilkan isi tabel)
delete from dept_copy012

WHERE admrdept = 'a00';

7. Hapus semua data yang ada di dalam tabel DEPARTMENT. (Tampilkan hasilnya)
delete from dept_copy012

8. Tampilkan no pegawai, nama pegawai (first name, last name), umur, pegawai, lama bekerja
pegawai (dalam hari, bulan, tahun)

SELECT EMPNO, FIRSTNME, LASTNAME, YEAR(current date - BIRTHDATE) as


"USIA", DAY(current date - HIREDATE) as "lama hari kerja",
MONTH(current date - HIREDATE) as "lama bulan kerja", year(current
date - HIREDATE) as " lama tahun kerja" FROM EMPLOYEE;

9. Tampilkan seluruh nama department beserta nama manajer (nama lengkap).Jika ada yang
bernilai NULL ganti dengan nama belakang anda (contoh "richard")

SELECT DEPTNAME,COALESCE(FIRSTNME|| ' ' || LASTNAME,'ADDIN')AS MANAGER

FROM EMPLOYEE E RIGHT OUTER JOIN DEPARTMENT D ON E.EMPNO=D.MGRNO;

10. Tampilkan informasi nama departemen, pekerjaan pegawai (contoh : Christine Haas Bekerja
sebagai manajer) dan total gaji (salary,comm,bonus) per bulan!

SELECT DEPTNAME, FIRSTNME|| ' ' || LASTNAME || ' BERKERJA SEBAGAI ' ||

JOB AS"PERKERJAAN PEGAWAI", SALARY + BONUS + COMM AS"GAJI TOTAL PER BULAN"

FROM EMPLOYEE E JOIN DEPARTMENT D ON E.WORKDEPT=D.DEPTNO;

11. Tampilkan no pegawai, nama pegawai serta nama dept tempat dia bekerja

select EMPNO, FIRSTNME, LASTNAME, DEPTNAME

from EMPLOYEE join DEPARTMENT

on WORKDEPT = DEPTNO;
12. Tampilkan nama proyek yang dikerjakan oleh manajer di setiap department. Tampilkan pula
nama belakang manajer dan nama depertemen tempat manajer itu bekerja.

select LASTNAME, DEPTNAME, PROJNAME


from EMPLOYEE E, DEPARTMENT D, PROJECT P
WHERE E.WORKDEPT = D.DEPTNO
AND D.DEPTNO = P.DEPTNO
AND JOB = 'MANAGER';

13. Tampilkan seluruh nama department beserta nama manajer (nama depan)

select FIRSTNME, DEPTNAME

from EMPLOYEE join DEPARTMENT

on EMPNO = MGRNO;

SELECT D.DEPTNAME, E.FIRSTNME

FROM DEPARTMENT D

LEFT OUTER JOIN EMPLOYEE E

ON D.MGRNO = E.EMPNO;

14. Edit edit kolom

ALTER TABLE MAHASISWA_BIODATA_012


ADD COLUMN EmailUB VARCHAR(25);
RENAME COLUMN ALAMAT_MALANG TO ALAMAT_DOMISILI;
ALTER COLUMN NO_HP SET DATA TYPE VARCHAR(20);
DROP COLUMN NO_TELP;

CREATE TABLE MAHASISWA_BIODATA1_012 LIKE MAHASISWA_BIODATA_012;


RENAME MAHASISWA_BIODATA1_012 to MAHASISWA_BIODATA_012 ;

1. Hitung jumlah pekerja Wanita pada setiap Departemen yang ada. (Tampilkan Deptname,
Jumlah_Pekerja_Wanita)

SELECT DEPTNAME, COUNT(SEX) AS JUMLAH_PEKERJA_WANITA

FROM EMPLOYEE JOIN DEPARTMENT

on WORKDEPT = DEPTNO

WHERE SEX = 'F'

GROUP BY DEPTNAME ;
2. Hitung Total Gaji pada setiap job yang ada dimana yang ditampilkan hanya Total_gaji diatas 20000

SELECT JOB, SUM(SALARY+BONUS+COMM) AS "TOTAL GAJIH" FROM EMPLOYEE

GROUP BY JOB

HAVING SUM(SALARY+BONUS+COMM) > 20000

ORDER BY SUM(SALARY+BONUS+COMM);

1. Tampilkan nama departemen yang memiliki jumlah pegawai lebih dari 3 dan departemen
berawalan A!

SELECT DEPTNAME, COUNT(EMPNO) AS JUMLAH_PEGAWAI

FROM EMPLOYEE JOIN DEPARTMENT

on WORKDEPT = DEPTNO

WHERE DEPTNAME LIKE 'A%'

GROUP BY DEPTNAME

HAVING COUNT(EMPNO) > 3 ;

2. Tampilkan data nomor departemen, nama departemen, nomor proyek, nama proyek, dan tanggal
dimulainya proyek, dimana deptno adalah D01 atau projno MA2111!

SELECT D.DEPTNO, D.DEPTNAME, P.PROJNAME, P.PRSTDATE FROM DEPARTMENT D JOIN


PROJECT P

ON D.DEPTNO = P.DEPTNO WHERE D.DEPTNO = 'D01'

UNION

SELECT D.DEPTNO, D.DEPTNAME, P.PROJNAME, P.PRSTDATE FROM DEPARTMENT D JOIN


PROJECT P

ON D.DEPTNO = P.DEPTNO WHERE P.PROJNO = 'MA2111';

3. Tampilkan nomor pegawai, nama pegawai (firstname dan lastname), nomor departemen, nama
departemen, dan gaji yang memiliki job berawalan C dan nomor departemen adalah A00 namun gaji
pegawai > 40000!

SELECT E.EMPNO, E.FIRSTNME, E.LASTNAME, D.DEPTNO, D.DEPTNAME, E.SALARY

FROM EMPLOYEE E, DEPARTMENT D


WHERE E.WORKDEPT = D.DEPTNO AND E.JOB LIKE 'C%' AND D.DEPTNO = 'A00'

INTERSECT

SELECT E.EMPNO, E.FIRSTNME, E.LASTNAME, D.DEPTNO, D.DEPTNAME, E.SALARY

FROM EMPLOYEE E, DEPARTMENT D

WHERE E.WORKDEPT = D.DEPTNO AND E.SALARY > 40000

1. Tampilkan SELURUH nama department beserta jumlah pegawai laki-laki dan perempuan
pada setiap department menggunakan subquery
Script:
SELECT DEPTNAME,
(SELECT COUNT(SEX)
FROM EMPLOYEE
WHERE SEX='M' AND WORKDEPT = DEPTNO) AS PEGAWAI_PRIA,
(SELECT COUNT(SEX)
FROM EMPLOYEE
WHERE SEX='F' AND WORKDEPT = DEPTNO) AS PEGAWAI_WANITA
FROM DEPARTMENT

2. Tampilkan nama departemen, nama lengkap pegawai, nomor pegawai, dan gaji dari
pegawai yang memiliki gaji lebih besar dari rata-rata gaji keseluruhan pegawai, lalu
urutkan dari salary yang terbesar ke yang terkecil
Script:
SELECT D.DEPTNAME, E.FIRSTNME ||' '|| E.MIDINIT ||' '||
E.LASTNAME AS "NAMA_PEGAWAI",
E.EMPNO, SALARY FROM EMPLOYEE E LEFT JOIN DEPARTMENT D
ON E.WORKDEPT = D.DEPTNO WHERE SALARY > (SELECT AVG(SALARY)
FROM EMPLOYEE)
ORDER BY E.SALARY DESC

3. Tampilkan nama department,nama manager (termasuk presdir),jumlah project dari


department yang memiliki jumlah project lebih banyak dari departement planning atau
operations
Script:

SELECT D.DEPTNAME, E.MANAGER, E.JOB, COALESCE(PR.NUM_PROJ,0)AS


"BANYAK PROYEK"
FROM DEPARTMENT D
JOIN (SELECT (FIRSTNME||''||MIDINIT||''||LASTNAME) AS MANAGER,
WORKDEPT, JOB
FROM EMPLOYEE WHERE JOB='MANAGER' OR JOB='PRES') E ON
D.DEPTNO=E.WORKDEPT
LEFT OUTER JOIN (SELECT DEPTNO, COUNT(PROJNO) AS NUM_PROJ
FROM PROJECT GROUP BY DEPTNO) PR ON D.DEPTNO=PR.DEPTNO
WHERE PR.NUM_PROJ > ANY (SELECT COUNT(PROJNO) AS NUM_PROJ FROM
PROJECT P JOIN DEPARTMENT D1 ON
P.DEPTNO=D1.DEPTNO
GROUP BY D1.DEPTNAME
HAVING D1.DEPTNAME='PLANNING' OR
D1.DEPTNAME='OPERATIONS')
4. Tampilkan nama department beserta RATA-RATA gaji pegawai pada department
tersebut dimana JUMLAH gaji yang dimiliki oleh pegawai pada department tersebut
lebih besar daripada jumlah gaji dari manager pada semua department
Script:
SELECT DEPTNAME, SUM(SALARY)/COUNT(WORKDEPT) AS RATA_RATA FROM
EMPLOYEE, DEPARTMENT
WHERE WORKDEPT = DEPTNO GROUP BY DEPTNAME HAVING SUM(SALARY) >
(SELECT SUM(SALARY)
FROM EMPLOYEE WHERE JOB = 'MANAGER')

Kolom yang tidak disebutkan dalam perintah INSERT INTO secara otomatis akan
diisi dengan nilai NULL.

INSERT INTO STAFF (id, name, job, ___ ___)

VALUES (190, ‘Will’, ‘Acc’);

Atau secara eksplisit memasukkan nilai NULL ke suatu kolom :

INSERT INTO STAFF

VALUES (200, ‘Smith’, ‘Sec’, NULL, NULL);

1.) CREATE TABLE PROGRAM_STUDI(


ID_PROGRAM_STUDI INTEGER NOT NULL,
PROGRAM_STUDI VARCHAR(100),
ID_STRATA INTEGER,
ID_FAKULTAS INTEGER,
FOREIGN KEY(ID_STRATA) REFERENCES STRATA (ID_STRATA),
FOREIGN KEY(ID_FAKULTAS)REFERENCES FAKULTAS (ID_FAKULTAS)
);

CREATE TABLE MAHASISWA(


NIM VARCHAR(15),
NAMA VARCHAR (100),
ANGKATAN SMALLINT,
JENIS_KELAMIN CHAR (1),
ID_STRATA INTEGER,
ID_FAKULTAS INTEGER,
ID_STATUS_KULIAH INTEGER,
ID_UB_DOMISILI INTEGER,
ID_SELEKSI INTEGER,
FOREIGN KEY(ID_STRATA) REFERENCES STRATA (ID_STRATA),
FOREIGN KEY(ID_FAKULTAS)REFERENCES FAKULTAS (ID_FAKULTAS),
FOREIGN KEY(ID_STATUS_KULIAH)REFERENCES STATUS_KULIAH (ID_STATUS_KULIAH),
FOREIGN KEY(ID_UB_DOMISILI)REFERENCES UB_DOMISILI (ID_UB_DOMISILI),
FOREIGN KEY(ID_SELEKSI)REFERENCES SELEKSI (ID_SELEKSI)
);
2.) INSERT INTO FAKULTAS(ID_FAKULTAS, FAKULTAS)VALUES(01, 'FAKULTAS ILMU
KOMPUTER');
INSERT INTO STRATA(ID_STRATA, STRATA)VALUES(11, 'SARJANA'),(12, 'MAGISTER
S2');

INSERT INTO SELEKSI(ID_SELEKSI, SELEKSI)VALUES(21,'SPKS-U'),(22,'SPMK'),


(23,'SNMPTN'),(24,'REG'),(25,'PSB-A'),(26,'DOG');
INSERT INTO UB_DOMISILI(ID_UB_DOMISILI, UB_DOMISILI)VALUES(1,'BRAWIJAYA-
KEDIRI'),(2,'BRAWIJAYA-MALANG');
INSERT INTO STATUS_KULIAH(ID_STATUS_KULIAH, STATUS_KULIAH)VALUES(33,
'LULUS'),(44,'AKTIF');
INSERT INTO PROGRAM_STUDI(ID_PROGRAM_STUDI, PROGRAM_STUDI)VALUES(123,'ILMU
KOMPUTER/TEKNIK INFORMATIKA'),(124, 'SISTEM INFORMASI'),(125, 'TEKNIK
KOMPUTER');
INSERT INTO MAHASISWA(NIM, NAMA,ANGKATAN,JENIS_KELAMIN)VALUES(1,'NAMA MHS
1','2010','P'),(2,'NAMA MHS 2','2010','L'),(3,'NAMA MHS 3','2012','L'),
(4,'NAMA MHS 4','2012','L'),
(5,'NAMA MHS 5','2011','L'),(6,'NAMA MHS 6','2013','L'),(7,'NAMA MHS
7','2013','L'),(8,'NAMA MHS 8','2013','L'),(9,'NAMA MHS 9','2009','L'),
(10,'NAMA MHS 10','2009','L'),(11,'NAMA MHS 11','2014','L'),(12,'NAMA MHS
12','2014','P'),(13,'NAMA MHS 13','2014','P'),
(14,'NAMA MHS 14','2014','P'),(15,'NAMA MHS 15','2014','L');
CREATE VIEW V_REKAPMHS AS
SELECT F.FAKULTAS, S.STRATA, P.PROGRAM_STUDI, M.ANGKATAN, SL.SELEKSI,
D.UB_DOMISILI, SK.STATUS_KULIAH, COUNT(M.NIM) AS TOTAL
FROM MAHASISWA M JOIN FAKULTAS F ON M.ID_FAKULTAS=F.ID_FAKULTAS
JOIN STRATA S ON M.ID_STRATA=S.ID_STRATA
JOIN PROGRAM_STUDI P ON M.ID_PROGRAM_STUDI=P.ID_PROGRAM_STUDI AND
P.ID_STRATA=S.ID_STRATA AND P.ID_FAKULTAS=F.ID_FAKULTAS
JOIN SELEKSI SL ON SL.ID_SELEKSI=M.ID_SELEKSI
JOIN UB_DOMISILI D ON D.ID_UB_DOMISILI=M.ID_UB_DOMISILI
JOIN STATUS_KULIAH SK ON SK.ID_STATUS_KULIAH=M.ID_STATUS_KULIAH
GROUP BY F.FAKULTAS, S.STRATA, P.PROGRAM_STUDI, M.ANGKATAN, SL.SELEKSI,
D.UB_DOMISILI, SK.STATUS_KULIAH
;

Anda mungkin juga menyukai