Untuk mendapatkan juara umum data nilai siswa perlu di jumlahkan dan dirata-ratakan. Yang berarti diperlukan table nilai siswa dan tabel kelas/mata pelajaran yang di ambil. Misalnya kedua table tersebut adalah
Table Kelas
id_siswakelas | id_siswa | Kelas |
1 | aa | IA |
2 | bb | IA |
3 | cc | IA |
4 | dd | IB |
5 | ee | IB |
Table Nilai
id_nilai | id_siswa | id_mapel | Nilai |
1
|
aa
|
Math
|
8
|
2
|
bb
|
Math
|
7
|
3
|
cc
|
Math
|
8
|
4
|
dd
|
Math
|
6
|
5
|
ee
|
Math
|
7
|
6
|
aa
|
Biologi
|
8
|
7
|
bb
|
Biologi
|
8
|
8
|
cc
|
Biologi
|
7
|
9
|
dd
|
Biologi
|
6
|
10
|
ee
|
Biologi
|
7
|
Mencari nilai rata-rata tiap siswa untuk mata plajarannya
select id_siswa, avg( nilai ) as rerata
from Nilai
group by id_siswa, id_mapel
[query I]
Query tersebut akan menghasilkan data
Query I
Id_siswa | rerata |
aa
|
8
|
bb
|
7.5
|
cc
|
7.5
|
dd
|
6
|
ee
|
7
|
Langkah II
Langkah berikutnya adalah menampilkan kelas dan mengurutkan berdasarkan kelasnya
select b.kelas, a.id_siswa, avg( nilai ) as rerata
from Nilai a
inner join Kelas b on b. id_siswa =a.id_siswa
group by a.id_siswa, id_mapel
[query II]
ini akan menghasilkan
Kelas | Id_siswa | rerata |
IA
|
aa
|
8
|
IA
|
bb
|
7.5
|
IA
|
cc
|
7.5
|
IB
|
dd
|
6
|
IB
|
ee
|
7
|
Untuk mengurutkannya dengan perintah order by, kita bisa menganggap hasil queri II tersebut adalah sebuah table nanti akan kita beri alias sebagai tableQ dan berikutnya diurutkan,
select kelas, id_siswa, rerata
from (
select b.kelas, a.id_siswa, avg( nilai ) as rerata
from Nilai a
inner join Kelas b on b. id_siswa =a.id_siswa
group by a.id_siswa, id_mapel
) as tableQ
order by kelas, rerata
[query III]
trik penggunaan hasil query sebagai table inilah yang dikenal dengan subquery. Jika diperhatikan ada dua buah order by, yaitu kelas dan rerata. Disini berarti data diurutkan dulu berdasarkan kelasnya, selanjutnya dlam posisi data yang berurut tersebut kemudian diurutkan lagi berdasarkan rata-rata nilai.
perhatikan juga select pada query utama mengacu pada nama-nama alias didalam subquery.
hasil dari query III akan sebagai berikut
Kelas | Id_siswa | rerata |
IA | aa |
8
|
IA | bb |
7.5
|
IA | cc |
7.5
|
IB | ee |
7
|
IB | dd |
6
|
No comments:
Post a Comment