Anda di halaman 1dari 6

Worksheet 4

BASIS DATA
TIF Kelas C

Nama:
Leonard Eikel Arapenta Tarigan (215150200111048)

Dosen:
Putra Pandu Adikara, S.Kom., M.Kom.

Program Studi TEKNIK INFORMATIKA


Jurusan TEKNIK INFORMATIKA
Universitas Brawijaya

2022
Worksheet|Tugas 4 Leonard Eikel Arapenta Tarigan
(215150200111048)

1. Cari nilai tertinggi, nilai terendah, dan nilai rata-rata dari seluruh mahasiswa yang ada.
Jawaban :

Kode

SELECT MIN(T.score) AS min_score, MAX(T.score) AS max_score,


AVG(T.score) AS avg_score
FROM takes AS T

Screenshot

Penjelasan
Nilai seluruh mahasiswa yang ada terletak pada tabel takes. Untuk mengambil nilai minimum
dari kolom score, kita dapat menggunakan fungsi agregat MIN(). Untuk mengambil nilai
maksimum, kita gunakan fungsi MAX(). Lalu, untuk menghitung rata-rata dari keseluruhan
nilai, kita gunakan fungsi AVG(). Untuk mempermudah, kita beri alias pada ketiga kolom
tersebut, min_score untuk nilai minimum, max_score untuk nilai maksimum, dan avg_score
untuk nilai rata-rata.

2. Cari nilai tertinggi nilai terendah, dan nilai rata-rata dari mahasiswa tiap departemen.
Tampilkan nama departemen kemudian nilai-nilai tsb. Untuk departemen hanya dari 3
departemen saja, yaitu Computer Science, Statistics, Physics. Dalam kasus ini, gunakan
operasi himpunan.
Jawaban :

Kode

SELECT S.dept_name, MIN(T.score) AS min_score, MAX(T.score) AS


max_score, AVG(T.score) AS avg_score
FROM student AS S, takes AS T
WHERE (T.ID = S.ID) AND S.dept_name = 'Comp. Sci.'
GROUP BY S.dept_name

1
Worksheet|Tugas 4 Leonard Eikel Arapenta Tarigan
(215150200111048)

UNION
SELECT S.dept_name, MIN(T.score) AS min_score, MAX(T.score) AS
max_score, AVG(T.score) AS avg_score
FROM student AS S, takes AS T
WHERE (T.ID = S.ID) AND S.dept_name = 'Statistics'
GROUP BY S.dept_name
UNION
SELECT S.dept_name, MIN(T.score) AS min_score, MAX(T.score) AS
max_score, AVG(T.score) AS avg_score
FROM student AS S, takes AS T
WHERE (T.ID = S.ID) AND S.dept_name = 'Physics'
GROUP BY S.dept_name

Screenshot

Penjelasan
Untuk soal ini, kita akan menggunakan dua tabel, yakni tabel student dan takes yang
masing-masing diberi alias S dan T. Sama seperti nomor (1), kita akan menggunakan fungsi
agregat MIN(), MAX(), dan AVG(). Untuk kondisinya, kita akan mengambil data yang memiliki
nilai S.ID = T.ID dan S.dept_name bernilai “Comp. Sci.”, “Physics”, dan “Statistics”. Setelah itu, kita
lakukan grouping berdasarkan dept_name. Terakhir, kita akan mencari union dari ketiga query
yang dihasilkan dengan menggunakan UNION.

3. Cari nilai tertinggi, nilai terendah, dan nilai rata-rata per tahun, per semester, dan per
departemen. Tampilkan nama departemen, tahun, semester, kemudian nilai-nilai tsb.
Jawaban :

Kode

SELECT S.dept_name, T.[year], T.semester, MIN(T.score) AS


min_score, MAX(T.score) AS max_score, AVG(T.score) AS avg_score
FROM student AS S, takes as T
WHERE (T.ID = S.ID)
GROUP BY T.semester, T.[year], S.dept_name

2
Worksheet|Tugas 4 Leonard Eikel Arapenta Tarigan
(215150200111048)

ORDER BY S.dept_name, T.[year], T.semester

Screenshot

Penjelasan
Untuk kasus ini, kita akan menggunakan dua tabel, yakni student dan takes dengan
masing-masing tabel diberi alias S dan T. Kemudian kita cari nilai minimum, maksimum, dan
rata-rata menggunakan function MIN(), MAX(), dan AVG(). Lalu kita beri kondisi dimana data
yang diambil memiliki nilai T.ID = S.ID. Setelah itu, kita lakukan grouping terhadap kolom
semester dan year pada tabel takes dan kolom dept_name pada tabel student. Terakhir, kita
lakukan ordering pada hasil data berdasarkan dept_name, year, lalu semester untuk
memudahkan melihat hasilnya.

4. Cari berapa banyak mahasiswa yang memiliki nilai di atas 80 per tahun, per semester,
dan per departemen. Tampilkan nama departemen, tahun, semester, dan jumlah
mahasiswa.
Jawaban :

Kode

SELECT S.dept_name, T.[year], T.semester, COUNT(T.score) AS


total_student

3
Worksheet|Tugas 4 Leonard Eikel Arapenta Tarigan
(215150200111048)

FROM student AS S, takes AS T


WHERE (S.ID = T.ID) AND (T.score > 80)
GROUP BY T.[year], S.dept_name, T.semester
ORDER BY S.dept_name, T.[year], T.semester

Screenshot

Penjelasan
Untuk kasus ini kurang lebih mirip dengan nomor (3). Perbedaannya terletak pada function
yang kita gunakan dan kondisi data yang diambil. Untuk kasus ini, kita akan menggunakan
function COUNT() untuk mendapatkan banyaknya jumlah data. Data yang kita ambil haruslah
memiliki nilai S.ID = T.ID dan T.score > 80. dengan begitu, kita akan mendapatkan banyaknya
data dengan field score bernilai lebih dari 80.

5. Cari departemen yang memiliki mahasiswa dengan nilai di atas 80 per tahunnya.
Tampilkan nama departemen dan tahun yang jumlah mahasiswa per departemen
memiliki lebih dari 65 mahasiswa.
Jawaban :

4
Worksheet|Tugas 4 Leonard Eikel Arapenta Tarigan
(215150200111048)

Kode

SELECT S.dept_name, T.[year]


FROM student AS S, takes AS T
WHERE (S.ID = T.ID) AND (T.score > 80)
GROUP BY T.[year], S.dept_name
HAVING COUNT(S.ID) > 65
ORDER BY S.dept_name, T.[year]

Screenshot

Penjelasan
Untuk kasus ini, kita akan mengambil dua kolom, yakni kolom dept_name dari tabel student
dan kolom year dari tabel takes. Data yang diambil harus memiliki atribut S.ID = T.ID dan
T.score > 80. Selanjutnya, kita lakukan grouping berdasarkan kolom dept_name dan year.
Kemudian, kita tambahkan satu kondisi dimana data dept_name dan year yang ditampilkan
harus memiliki jumlah mahasiswa > 65. Untuk itu, kita dapat menggunakan keyword HAVING
dengan kondisi COUNT(S.ID) > 65.

Anda mungkin juga menyukai