๐Ÿ“˜ Pertemuan 6 โ€“ Penggunaan ORDER BY, GROUP BY, dan Logika AND, OR, serta IF (CASE) di SQL Server

๐ŸŽฏ Tujuan Pembelajaran

Setelah pertemuan ini, siswa diharapkan mampu:

  • Mengurutkan data menggunakan ORDER BY
  • Mengelompokkan data dengan GROUP BY
  • Menggunakan kondisi logika AND,OR dan NOT
  • Menggunakan logika percabangan IF dengan CASE WHEN di SQL Server

1. ORDER BY

Perintah ORDER BY digunakan untuk mengurutkan hasil query berdasarkan satu atau lebih kolom.

1
2
3
SELECT Judul, Pengarang, TahunTerbit
FROM Buku
ORDER BY TahunTerbit DESC;

๐Ÿ’ก Keterangan:

  • ASC = urut naik (default)
  • DESC = urut menurun

2. GROUP BY

Perintah GROUP BY digunakan untuk mengelompokkan baris berdasarkan nilai kolom tertentu. Biasanya digunakan bersama fungsi agregat seperti COUNT(), SUM(), AVG(), dll.

1
2
3
SELECT Pengarang, COUNT(*) AS JumlahBuku
FROM Buku
GROUP BY Pengarang;

๐Ÿ’ก Contoh hasil:

PengarangJumlahBuku
Tere Liye5
Dewi Lestari2
Andrea Hirata3

3. Kombinasi GROUP BY dan HAVING

HAVING digunakan untuk memfilter hasil setelah pengelompokan (karena WHERE tidak bisa digunakan pada hasil agregat).

1
2
3
4
SELECT Pengarang, COUNT(*) AS JumlahBuku
FROM Buku
GROUP BY Pengarang
HAVING COUNT(*) > 2;

๐Ÿ’ก Penjelasan:
Menampilkan hanya pengarang yang memiliki lebih dari 2 buku.


4. Logika AND, OR dan NOT

Keduanya digunakan untuk menggabungkan kondisi di perintah WHERE.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- Contoh 1: Menggunakan AND
SELECT *
FROM Buku
WHERE TahunTerbit > 2015 AND Pengarang = 'Tere Liye';

-- Contoh 2: Menggunakan OR
SELECT *
FROM Buku
WHERE Penerbit = 'Gramedia' OR TahunTerbit < 2010;

-- Contoh 3: Menggunakan NOT
SELECT Judul, TahunTerbit
FROM Buku
WHERE NOT TahunTerbit = '2020';

๐Ÿ’ก Penjelasan:

  • AND โ†’ kedua kondisi harus benar
  • OR โ†’ salah satu kondisi cukup benar
  • NOT โ†’ selain kondisi benar yang diminta

5. Logika Percabangan IF dengan CASE WHEN

SQL Server tidak memiliki IF langsung dalam SELECT, tetapi kita bisa menggunakan CASE.

1
2
3
4
5
6
7
8
9
10
SELECT 
Judul,
TahunTerbit,
CASE
WHEN TahunTerbit >= 2020 THEN 'Baru'
WHEN TahunTerbit BETWEEN 2010 AND 2019 THEN 'Sedang'
ELSE 'Lama'
END AS Kategori
FROM Buku
ORDER BY TahunTerbit DESC;

๐Ÿ’ก Penjelasan:

  • CASE WHEN berfungsi seperti IF-ELSE
  • Dapat digunakan di SELECT, ORDER BY, atau bahkan di UPDATE

6. Latihan Mandiri

  1. Tampilkan semua data buku dengan urutan berdasarkan Pengarang secara alfabetik.
  2. Kelompokkan buku berdasarkan Penerbit, lalu hitung jumlah buku per penerbit.
  3. Tampilkan hanya penerbit yang memiliki lebih dari 3 buku.
  4. Gunakan kondisi AND, OR dan NOT untuk menampilkan:
    • Buku terbit setelah 2018 dan diterbitkan oleh โ€œGramediaโ€
    • Buku terbit sebelum 2010 atau oleh pengarang โ€œAndrea Hirataโ€
    • Buku yang ditulis selain oleh pengarang โ€œJK Rowlingโ€
  5. Buat kolom baru StatusTahun menggunakan CASE:
    • Jika TahunTerbit > 2018 โ†’ โ€œTerbaruโ€
    • Jika antara 2010โ€“2018 โ†’ โ€œMenengahโ€
    • Jika < 2010 โ†’ โ€œKlasikโ€

7. Tugas Tambahan

Buat query untuk menampilkan daftar pengarang beserta:

  • Jumlah buku yang ditulis (COUNT)
  • Tahun terbit tertua (MIN)
  • Tahun terbit terbaru (MAX)
  • Status buku berdasarkan CASE:
    • Jika MAX(TahunTerbit) >= 2022 โ†’ โ€œAktifโ€
    • Jika antara 2015โ€“2021 โ†’ โ€œProduktifโ€
    • Jika < 2015 โ†’ โ€œTidak aktif lagiโ€

Gunakan GROUP BY Pengarang untuk mengelompokkan hasilnya.


๐Ÿ’ก Catatan Tambahan

  • ORDER BY selalu ditulis paling akhir di query.
  • HAVING hanya digunakan setelah GROUP BY.
  • CASE WHEN bisa digunakan untuk membuat data lebih informatif tanpa perlu mengubah tabel.

๐Ÿ“˜ Kesimpulan

KonsepFungsiContoh Singkat
ORDER BYMengurutkan hasilORDER BY TahunTerbit DESC
GROUP BYMengelompokkan dataGROUP BY Pengarang
HAVINGFilter setelah agregasiHAVING COUNT(*) > 2
AND / ORLogika gabunganWHERE x AND y / WHERE x OR y
CASE WHENLogika if-elseCASE WHEN Tahun > 2020 THEN 'Baru'