Penggunaan fungsi Grouping dan Having sangat berkaitan erat dengan
fungsi agregat yang sudah kita bahasa pada materi Belajar SQL #4. Fungsi Group
By akan mengelompokkan fungsi agregat sesuai dengan kesamaan data yang
ditentukan pada bagian kondisi. Fungsi Having sebenarnya hampir sama dengan
fungsi WHERE sebagai penentuk kondisi data yang akan ditampilkan.
Sebelum kita memulai penggunaan fungsi GROUP BY dan HAVING, kita
persiapkan dahulu tabel yang diperlukan.
Buat Database dengan nama dbkampus, perintah SQL-nya
CREATE DATABASE dbkampus
Selanjutnya pada database dbkampus buat tabel dengan nama
tblpenilaian, perintah SQL-nya :
CREATE TABLE tblpenilaian
(nim varchar(10),
Nama varchar(35),
Matapelajaran varchar(20),
Harian int(3),
Uts int(3),
Uas int(3))
Ketikkan perintah SQL berikut
ini untuk memasukkan data kedalam tabel tblpenilaian
INSERT
INTO tblpenilaian (nim, nama, matapelajaran, harian, uts, uas) VALUES
('001',
'Sanusi', 'PPKN', 65, 75, 90),
('001',
'Sanusi', 'Bhs. Indonesia', 80, 75, 90),
('001',
'Sanusi', 'IPA', 75, 95, 90),
('001',
'Sanusi', 'Bhs. Inggris', 65, 65, 90),
('001',
'Sanusi', 'Matematika', 65, 80, 60),
('002',
'Ahmad', 'PPKN', 65, 85, 80),
('002',
'Ahmad', 'Bhs. Indonesia', 80, 75, 90),
('002',
'Ahmad', 'IPA', 75, 95, 70),
('002',
'Ahmad', 'Bhs. Inggris', 75, 85, 90),
('002',
'Ahmad', 'Matematika', 65, 70, 60),
('003',
'Wahyudi', 'PPKN', 80, 80, 70),
('003',
'Wahyudi', 'Bhs. Indonesia', 80, 95, 80),
('003',
'Wahyudi', 'IPA', 85, 75, 90),
('003',
'Wahyudi', 'Bhs. Inggris', 75, 85, 90),
('003',
'Wahyudi', 'Matematika', 75, 70, 60)
Setelah
database, tabel beserta isinya sudah
tersedia selanjutnya kita bisa memulai latihan penggunaan GROUP BY dan HAVING.
Contoh 1:
Menampilkan
nilai rata-rata nilai siswa dengan pengelompokkan berdasarkan nim. Perintah SQL-nya
SELECT
nim, nama, AVG(harian), AVG(uts), AVG(uas)
FROM
tblpenilaian
GROUP
BY nim
Sehingga
akan didapatkan hasil seperti berikut.
Seandainya
judul masing masing kolom mau dirobah, AVG(harian) ingin dirobah jadi Nilai
Harian, AVG(uts) ingin dirobah jadi Nilai UTS,
AVG(uas) ingin dirobah menjadi Nilai UAS, maka perintah SQL-nya bisa
seperti berikut :
SELECT
nim, nama, AVG(harian) 'Nilai Harian', AVG(uts) 'Nilai UTS', AVG(uas) 'Nilai
UAS'
FROM
tblpenilaian
GROUP
BY nim
Atau
SELECT
nim, nama, AVG(harian) AS 'Nilai Harian', AVG(uts) AS 'Nilai UTS', AVG(uas) AS
'Nilai UAS'
FROM
tblpenilaian
GROUP
BY nim
Contoh 2:
Menampilkan
rata-rata nilai mahasiswa per matapelajaran, perintah SQL-nya:
SELECT
matapelajaran, AVG(harian) AS 'Nilai Harian', AVG(uts) AS 'Nilai UTS', AVG(uas)
AS 'Nilai UAS'
FROM
tblpenilaian
GROUP
BY matapelajaran
Sehingga
akan didapatkan hasil seperti dibawah ini :
Contoh 3:
Menampilkan
rata-rata nilai harian yang lebih rendah dari 75, maka perintah SQL-nya:
SELECT
nim, nama, AVG(harian) AS 'Nilai Harian'
FROM
tblpenilaian
GROUP
BY nim HAVING AVG(harian) < 75
Sehingga
akan didapatkan hasil siswa yang mendapat nilai ulangan harian yang dibawah
75 seperti dibawah ini :
Contoh 4:
Menampilkan rata-rata
nilai uas per matapelajaran yang lebih rendah dari 75, perintah SQL-nya :
SELECT
matapelajaran, AVG(uas) AS 'Nilai UAS'
FROM
tblpenilaian
GROUP
BY matapelajaran
HAVING
AVG(uas)<75
Sehingga
didapatkan hasil seperti gambar dibawah ini :
0 comments:
Post a Comment