GROUP BY & Agregate Function SQL
Pada kesempatan kali ini akan diimplementasikan perintah GROUP By dan fungsi agregat pada dataset yang sama dengan yang digunakan pada perintah SELECT sebelumnya, yakni dataset students performance.
Get Amanda Clara Dwi Putri’s stories in your inbox
Join Medium for free to get updates from this writer.
Pertanyaan-pertanyaan yang akan diselesaikan atau dijawab adalah sebagai berikut:
- Berapa jumlah record pada dataset tersebut?
- Buatlah query untuk menunjukkan: (a) perbandingan rata-rata nilai reading laki-laki dan perempuan!; (b) nilai math tertinggi dan terendah dari masing-masing tingkatan pendidikan orangtua (parental level of education).
- Berapa nilai rata-rata dari math, reading dan writing orang bergender perempuan yang pernah / sudah menyelesaikan kursus persiapan ujian (test_preparation_course)?
- Berapa nilai rata-rata writing orang yang memiliki orangtua yang tingkat pendidikannya adalah high school / some high school? (digabung, tidak terpisah)
- Query untuk menghasilkan output berupa nilai rata-rata math, reading, dan writing
— yang dikelompokkan berdasarkan gender, race/ethnicity dan kursus persiapan ujian. - Berdasarkan hasil output pada pertanyaan nomor 5, modifikasilah query tersebut untuk menunjukkan data yang memiliki nilai rata-rata matematika lebih besar dari 70!
Dan berikut adalah query untuk menjawab pertanyaan di atas
SELECT * FROM studentsperformance;
-- 1. Jumlah record pada dataset
SELECT COUNT(*) AS jumlah_data FROM studentsperformance;
-- 2.a. Perbandingan rata-rata nilai reading laki-laki dan perempuan
SELECT gender, AVG(reading_score) AS rerata_nilai_reading
FROM studentsperformance
GROUP BY gender;
-- 2.b. Nilai math tertinggi dan terendah dari masing-masing tingkatan pendidikan orangtua
SELECT parental_level_of_education,
MAX(math_score) AS nilai_math_tertinggi,
MIN(math_score) AS nilai_math_terendah
FROM studentsperformance
GROUP BY parental_level_of_education
ORDER BY parental_level_of_education ASC;
-- 3. nilai rata-rata dari math, reading dan writing orang bergender perempuan
-- yang pernah / sudah menyelesaikan kursus persiapan ujian (test_preparation_course)
SELECT gender,
test_preparation_course,
AVG(math_score) AS rerata_math,
AVG(reading_score) AS rerata_reading,
AVG(writing_score) AS rerata_writing
FROM studentsperformance
GROUP BY gender, test_preparation_course
HAVING gender = "female" AND test_preparation_course = "completed";
-- 4. nilai rata-rata writing orang yang memiliki orangtua
-- yang tingkat pendidikannya adalah high school / some high school? (digabung/tidak dipisah)
SELECT AVG(writing_score) AS rerata_writing
FROM studentsperformance
WHERE parental_level_of_education LIKE '%high school%';
-- 5. Query untuk mendapatkan data nilai rata-rata math, reading, dan writing
-- yang dikelompokkan berdasarkan gender, race/ethnicity dan kursus persiapan ujian
SELECT gender,
race_or_ethnicity,
test_preparation_course,
AVG(math_score) AS avg_math,
AVG(reading_score) AS avg_reading,
AVG(writing_score) AS avg_writing
FROM studentsperformance
GROUP BY gender,
race_or_ethnicity,
test_preparation_course
ORDER BY gender,
race_or_ethnicity,
test_preparation_course;
-- 6. Berdasarkan hasil output pada pertanyaan nomor 5 dengan rerata math > 70
SELECT gender,
race_or_ethnicity,
test_preparation_course,
AVG(math_score) AS avg_math,
AVG(reading_score) AS avg_reading,
AVG(writing_score) AS avg_writing
FROM studentsperformance
GROUP BY gender,
race_or_ethnicity,
test_preparation_course
HAVING avg_math > 70
ORDER BY gender,
race_or_ethnicity,
test_preparation_course;Note: Ini adalah jawaban studi kasus e-learning MySkill SQL Advance: Group By & Agregat dalam SQL series







