hari ini hujan deras diwilayah stasiun cawang jakarta selatan, jadi kita ngga bisa kemana-mana. Oleh karena itu saya ingin membagikan beberapa hal yang mungkin bisa digunakan ketika mengerjakan sebuah test untuk bisa masuk menjadi seorang data analis.
yang paling sering muncul disoal data analis adalah test query sql. (kenapa saya menulis hal ini: karena pada umumnya lulusan statistik tempat saya sekolah dulu banyak mengabaikan belajar query sql).
oke, berikut adalah salah satu soal yang mungkin muncul:
kita diberikan dua bentuk tabel data yaitu "Employee" dan "AnnualReview"
kemudian pertanyaan studi kasus seperti berikut:
- Tulis permintaan untuk mengembalikan semua karyawan yang masih bekerja untuk perusahaan dengan nama belakang dimulai dengan "Smith" diurutkan berdasarkan nama belakang kemudian nama depan.
- Mengingat tabel `Employee` dan` AnnualReviews`, tulis permintaan untuk mengembalikan semua karyawan yang tidak pernah memiliki ulasan yang disortir oleh HireDate.
- Tulis permintaan untuk menghitung selisih (dalam hari) antara karyawan yang paling dan paling tidak bekerja di perusahaan.
- Mengingat tabel karyawan di atas, tulis kueri untuk menghitung periode terpanjang (dalam hari) bahwa perusahaan telah pergi tanpa merekrut atau memecat siapa pun.
- Tulis permintaan yang mengembalikan setiap karyawan dan untuk setiap baris / karyawan termasuk jumlah karyawan terbanyak yang bekerja untuk perusahaan setiap saat selama masa jabatan mereka dan tanggal pertama yang maksimum tercapai. Poin tambahan karena tidak menggunakan kursor.
Jawaban querynya sebagai berikut :
Pertama Buat tabel databases nya dulu:
create table Employee (
kemudian, lakukan analysis sesuai perintah soal:
create table Employee (
FirstName varchar (30),
LastName varchar (30),
Id varchar (8),
HireDate date,
TerminationDate date,
Salary float8
);
create table AnnualReviews (
ID varchar (8),
EmpID varchar (8),
ReviewDate date
);
Kedua, masukin nilai ke setiap variabel nya
insert into Employee (FirstName, LastName, Id, HireDate, TerminationDate, Salary)
Kedua, masukin nilai ke setiap variabel nya
insert into Employee (FirstName, LastName, Id, HireDate, TerminationDate, Salary)
values
('Bob','Smith','1','2009-06-20','2016-01-01','10000'),
('Joe','Jarrod','2','2010-02-12',null,'20000'),
('Nancy','Soley','3','2012-03-14',null,'30000'),
('Keith','Widjaja','4','2013-09-10','2014-01-01','20000'),
('Kelly','Smalls','5','2013-09-10',null,'20000'),
('Frank','Nguyen','6','2015-04-10','2015-05-01','60000');
insert into AnnualReviews (ID, EmpID, ReviewDate)
values
('10','1','2016-01-01'),
('20','2','2016-04-12'),
('30','10','2015-02-13'),
('40','22','2010-10-12'),
('50','11','2009-01-01'),
('60','12','2009-03-03'),
('70','13','2008-12-01'),
('80','1','2003-04-12'),
('90','1','2014-04-30')
kemudian, lakukan analysis sesuai perintah soal:
- select datediff('day', min (HireDate), max (HireDate)) as difference_dayfrom Employee
- select max(dr) as Longest_Periodfrom(select datediff('day', a, (lead(a) over(order by a))) as drfrom(select HireDate as afrom Employeeunion allselect TerminationDatefrom Employeewhere TerminationDate is not null)t
- select concat (FirstName,' ', LastName) as Name, Hiredate, Periode_Date, TerminationDate, Total_Employ_Activefrom Employee as xcross join(select distinct d as Periode_Date, sum(SK ) over (order by d) as total_employ_activefrom(select distinct d, (lead(d) over (order by d)), SKfrom(select HireDate as d , 1 as SKfrom Employee
Silakan mencoba dan belajar. Jika menemukan sesuatu yang keliru dari query yang saya buat silahkan isi kolom komentar. Saya akan dengan senang hati menerima nya.
Tags:
#SQL
3 komentar