SQL

Klausa HAVING SQL : Syntax dan Contohnya

Klausa SQL HAVING

Klausa HAVING ditambahkan ke SQL karena kata kunci WHERE tidak dapat digunakan dengan fungsi agregat.

Syntax HAVING

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);

Contoh Database 1

Di bawah ini adalah pilihan dari tabel “Customer” di database contoh Northwind:

IdCustomerNamaCustomerNamaKontakAlamatKotaKodePosNegara
1
Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Jerman
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexiko
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexiko
4
Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPInggris
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

Contoh SQL HAVING

Pernyataan SQL berikut mencantumkan jumlah pelanggan di setiap negara. Hanya sertakan negara dengan lebih dari 5 pelanggan:

Contoh

SELECT COUNT(IdCustomer), Negara
FROM Customers
GROUP BY Negara
HAVING COUNT(IdCustomer) > 5;

Pernyataan SQL berikut mencantumkan jumlah pelanggan di setiap negara, diurutkan dari tinggi ke rendah (Hanya sertakan negara dengan lebih dari 5 pelanggan):

SELECT COUNT(IdCustomer), Negara
FROM Customers
GROUP BY Negara
HAVING COUNT(IdCustomer) > 5
ORDER BY COUNT(IdCustomer) DESC;

Contoh Database 2

Berikut adalah pilihan dari tabel “Orders” di database contoh Northwind:

IdOrderIdCustomerIdEmployeeTanggalPesanIdShipper
102489051996-07-043
102498161996-07-051
102503441996-07-082

Dan pilihan dari tabel “Employees”:

IdEmployeeLastNameFirstNameBirthDateFotoCatatan
1DavolioNancy1968-12-08EmpID1.picEducation includes a BA….
2FullerAndrew1952-02-19EmpID2.picAndrew received his BTS….
3LeverlingJanet1963-08-30EmpID3.picJanet has a BS degree….

Contoh Lain

Pernyataan SQL berikut mencantumkan karyawan yang telah mendaftarkan lebih dari 10 pesanan:

Contoh

SELECT Employees.LastName, COUNT(Orders.IdOrder) AS JumlahPesanan
FROM (Orders
INNER JOIN Employees ON Orders.IdEmployee = Employees.IdEmployee)
GROUP BY LastName
HAVING COUNT(Orders.IdOrder) > 10;

Pernyataan SQL berikut mencantumkan jika karyawan “Davolio” atau “Fuller” telah mendaftarkan lebih dari 25 pesanan:

Contoh

SELECT Employees.LastName, COUNT(Orders.IdOrder) AS JumlahPesanan
FROM Orders
INNER JOIN Employees ON Orders.IdEmployee = Employees.IdEmployee
WHERE LastName = 'Davolio' OR LastName = 'Fuller'
GROUP BY LastName
HAVING COUNT(Orders.IdOrder) > 25;

Hanifah Nurbaeti