Blog untuk berbagi ilmu komputer

Tuesday, May 20, 2014

Belajar SQL #5 Pengelompokkan Data Menggunakan Group By dan Having



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 :

Share:

0 comments:

Post a Comment

Blogger templates