• Subquery
FUNGSI AGREGAT
3
FUNGSI AGREGAT
• Syntax:
6
SUM(DISTINCT )
• Tabel Transactions
Menggunakan Distinct
7
AVG()
• Syntax:
8
COUNT()
• Syntax:
9
COUNT()
SELECT * FROM [HR].[Employees]
Count(*) Count(column_name)
10
MAX() & MIN()
MIN() MAX()
• Mengembalikan nilai terendah • Mengembalikan nilai tertinggi
dalam kolom dalam kolom
• Syntax: • Syntax:
MIN(expression) MAX(expression)
11
FUNGSI BAWAAN AGREGAT
• Selain data numerik, fungsi agregat juga dapat meringkas tipe data
yang lain seperti date, time dan character
• Contoh:
• Mengembalikan nama perusahaan yang pertama dan terakhir
12
FUNGSI AGREGAT DENGAN NULL
13
FUNGSI BAWAAN AGGREGATE
• Ketika menggunakan fungsi aggregate pada klausa SELECT, semua
kolom pada klausa SELECT harus merupakan fungsi aggregate juga
atau direferensikan pada klausa GROUP BY.
15
GROUP BY
• Mengelompokkan baris output berdasarkan field yang terdapat pada
sebuah tabel
• Syntax:
SELECT <select_list>
FROM <table_source>
WHERE <search_condition>
GROUP BY <group_by_list>
CONTOH GROUP BY
SELECT orderid, empid, custid
FROM Sales.Orders;
SELECT empid, COUNT(*)
FROM Sales.Orders
WHERE custid =3
GROUP BY empid;
17
HAVING
18
CONTOH HAVING
Tanpa HAVING Dengan HAVING
SELECT custid, COUNT(*) AS count_orders SELECT custid, COUNT(*) AS count_orders
FROM Sales.Orders FROM Sales.Orders
GROUP BY custid GROUP BY custid
HAVING COUNT(*) =3
19
SUBQUERY
20
SUBQUERY
21
SUBQUERY (1)
• Sintaks
SELECT <namaKolom>
FROM <namaTabel>
(SELECT <namaKolom>
FROM <namaTabel>
WHERE <ekspresi>)
22
SUBQUERY (2)
mahasiswa
idmhs Nama SELECT a.idmhs, a.name, a.total_nilai
V001 Abe FROM mahasiswa a, nilai b
V002 Betty WHERE a.idmhs= b.idmhs
AND b.total_nilai >
V003 Cellin (SELECT total_nilai
V004 Diaz FROM nilai
WHERE idmhs = 'V002')
nilai
idmhs total_nilai Idmhs Nama Total_nilai
V001 90 V001 Abe 90
V002 80 V004 Diaz 81
V003 74
V004 81
23
SUBQUERY SKALAR
• Contoh:
• Menampilkan detail order terakhir
SELECT orderid,
productid,
unitprice,
qty
FROM Sales.OrderDetails
WHERE orderid =
(
SELECT MAX(orderid) AS
LastOrder
FROM Sales.Orders
)
24
SUBQUERY MULTI-VALUE
• Menggunakan predikat IN
• Jika beberapa nilai pada hasil subquery cocok dengan predikat IN,
maka akan mengembalikan nilai TRUE
25
SUBQUERY MULTI-VALUE (2)
• Contoh:
• Menampilkan customer_id dan order_id dari customer yang berada pada negara
MEXICO
• Contoh:
• Mengembalikan pesanan dengan tanggal pesanan terbaru untuk setiap karyawan
SELECT orderid, empid, orderdate
FROM Sales.Orders AS O1
WHERE orderdate =
(
SELECT MAX(orderdate)
FROM Sales.Orders AS O2
WHERE O2.empid = O1.empid
)
ORDER BY empid, orderdate
27
SUBQUERY DENGAN KEYWORD EXISTS
• Keyword EXISTS pada subquery, dapat berfungsi sebagai tes
eksistensi(keberadaan)
• EXISTS mengembalikan nilai TRUE atau FALSE
• Jika ada baris yang dihasilkan oleh subquery, EXISTS mengembalikan nilai
TRUE
• Jika tidak ada baris yang dihasilkan oleh subquery, EXISTS mengembalikan
nilai FALSE
• Syntax:
WHERE [NOT] EXISTS (subquery)
28
SUBQUERY DENGAN KEYWORD EXISTS
30