Anda di halaman 1dari 29

Basic Structure of SQL Query

INF2033 Basis Data 1


Pertemuan 08

R. Kristoforus JB
Fakultas Sains & Teknologi
Universitas Katolik Musi Charitas
Sub Capaian Mata Kuliah
• Mahasiswa dapat menggunakan fungsi agregat dalam
sebuah query
• Mahasiswa dapat menggunakan klausa group by dan
kalusa having dalam sebuah query
• Mahasiswa dapat menggunakan operator-operator
himpunan dalam sebuah query

2
Outline
• SQL
– Aggregate functions:
• Avg
• Min
• Max
• Sum
• count
– Basic structure of SQL query:
• Group by clause
• Having clause
– Set operations
• Union
• Intersect
• Except

3
Yang perlu dipersiapkan
• aplikasi DB4S
• Schema diagram for university database
• File latihan:
– university.db
– university_ddl.sql
– university_dml.sql
• Kunjungi laman:
– https://www.sqlitetutorial.net/
– https://www.w3resource.com/sqlite/index.php

4
Schema Diagram for University Database

5
Aggregate functions
• Aggregate functions bekerja dengan banyak himpunan nilai
dari sebuah kolom atau atribut relasi dan mengembalikan
sebuah nilai.
• Fungsi agregat:
– avg: average value
– min: minimum value
– max: maximum value
– sum: sum of values
– count: number of values

6
Aggregate functions examples
• Contoh 1: Berapa rerata salary instructor di departemen Computer
Science?
select avg (salary)
from instructor
where dept_name= 'Comp. Sci.';
• Contoh 2: Berapa jumlah instructor yang mengajar di semester Spring
2010
select count (distinct ID)
from teaches
where semester = 'Spring' and year = 2010;
• Contoh 3: Berapa jumlah tuple pada tabel course?
select count (*)
from course;

7
Avg() function
• avg() function : mengembalikan nilai rerata dari sebuah ekpresi yang diberikan.
• Jika fungsi tidak menemukan nilai yang cocok, hasilnya: NULL.
• Tipe String dan BLOB diinterpretasikan sebagai 0.
• Hasil fungsi avg() selalu bertipe floating point value.

• Sintaks:
avg([DISTINCT] expr)

• Contoh 4: Tampilkan rerata salary dari instructor di departemen Comp. Sci.


select avg (salary)
from instructor
where dept_name= 'Comp. Sci.';

8
Avg() function
• Fungsi avg() dapat dikombinasikan dengan klausa group by.
• Hasilnya: rerata nilai setiap group.
• Contoh 5: Berapa rerata salary setiap departemen?
– select dept_name, avg (salary) as avg_salary
from instructor
group by dept_name;

9
Avg() function
• Fungsi avg() dapat dikombinasikan dengan keyword distinct.
• Hasilnya nilai rerata yang unik. Jika ada dua nilai rerata yang sama,
maka hanya satu yang ditampilkan.
• Perhatikan perbedaan contoh 6 dan contoh 7

• Contoh 6: Berapa rerata kredit dari setiap departemen?


select dept_name, avg(tot_cred) as avg_tot_cred
from student
group by dept_name;

• Contoh 7: Berapa rerata kredit dari setiap departemen?


select dept_name, avg(distinct(tot_cred)) as avg_tot_cred
from student
group by dept_name;

10
Avg() function
• Untuk mengatur nilai desimal dari hasil fungsi avg() dapat digunakan
keyword round().
• Contoh 8: Berapa rerata kredit dari setiap departemen?
select dept_name, round(avg(tot_cred),2) as avg_tot_cred
from student
group by dept_name;

11
Avg() function
• Fungsi avg() dapat juga dipakai bersama dengan klausa having.
• Klausa having hanya dapat digunakan bersama dengan klausa group
by.
• Dengan klausa having, fungsi avg() yang dihasilkan adlah yang
memenuhi syarat yang diekpresikan pada klausa having.
• Contoh 9: Tampilkan nama dan rerata salary yang lebih besar dari
42000 dari seluruh departemen.

select dept_name, avg (salary) as avg_salary


from instructor
group by dept_name
having avg (salary) > 42000;

12
Count() function
• Fungsi count() mengembalikan nilai banyaknya data dalam sebuah
atribut.

• Sintaks:
count(column)

• Contoh 10: Berapa banyak jumlah instructor?


select count(ID)
from instructor;

13
count() function
• Fungsi count dapat digunakan bersama keyword distinct
• Contoh 11: berapa banyak nama departemen pada tabel instructor?
select count(dept_name)
from instructor;
• Hasil dari contoh 11 akan menampilkan 50 (banyaknya data dept)name
pada tabel instructor)
• Contoh 12: berapa banyak nama departemen pada tabel instructor?
select count(distinct(dept_name))
from instructor;
• Hasil dari contoh 12 akan menampilkan 17
• Fungsi count() dapat digunakan bersama dengan klausa group by
• Contoh 13: Berapa banyak jumlah isntructor di setiap departemen?
select count(ID)
from instructor
group by dept_name;

14
count() function
• Perhatikan contoh berikut dan lihat • Contoh 16:
perbedaannya select building, student.dept_name,
count(*)
• Contoh 14
from student, department
select building, student.dept_name,
where student.dept_name=
count(*)
department.dept_name
from student, department
group by building, student.dept_name;
where student.dept_name=
department.dept_name
group by student.dept_name; • Contoh 17:
select building, student.dept_name,
count(*)
• Contoh 15:
from student, department
select building, student.dept_name,
where student.dept_name=
count(*)
department.dept_name
from student, department
group by student.dept_name, building;
where student.dept_name=
department.dept_name
group by building;

15
Count() function
• Fungsi count dapat digunakan bersama klausa having.
• Perhatikan contoh berikut:
• Contoh 18: berapa banyak berapa banyak instructor di setiap
departemen, tampilkan yang banyaknya lebih dari 3 instructor
select count(ID)
from instructor
group by dept_name
having count(ID)>3;
• Contoh 19: berapa banyak berapa banyak mahasiswa di setiap
departemen, tampilkan yang banyaknya lebih dari 100 mahasiswa
select building, student.dept_name, count(*)
from student, department
where student.dept_name=department.dept_name
group by student.dept_name
having count(*) > 100;

16
Max() function
• Fungsi max() mengembalikan nilai maksimum dari semua nilai dalam
kelompok.
• Sintaks:
max(expr);

• Contoh 20: Siapa dan berapa salary tertinggi dari seluruh instructor?
select name, max(salary)
from instructor;

• Contoh 21: Siapa dan berapa salary tertinggi dari seluruh instructor di
departemen Accounting?
select name, max(salary)
from instructor
where dept_name='Accounting';

17
Max() function
• Fungsi max() dapat digunakan bersama dengan klausa group by.
• Perhatikan contoh berikut.
• Contoh 22: Tampilkan nama dan salary dari instruktur yang memiliki
salary tertinggi di setiap departemen
select name, dept_name, max(salary)
from instructor
group by dept_name;
• Contoh 23: Tampilkan nama dan salary dari instruktur yang memiliki
salary tertinggi di setiap building
select building, max(salary)
from instructor, department
where department.dept_name=instructor.dept_name
group by building;

18
• Contoh 24: Tampilkan nama dan salary dari instruktur yang memiliki
salary tertinggi di setiap departemen
select building, department.dept_name, max(salary)
from instructor, department
where department.dept_name=instructor.dept_name
group by building, department.dept_name;

19
Min() function
• Fungsi min() mengembalikan nilai terkecil dari sekelompok nilai.
• Sintaks:
min(expr)

• Contoh 25: Berapa salary terkecil dari seluruh instructor?


Select min(salary)
from instructor;
• Fungsi min dapat digunakan bersama klausa group by.
• Contoh 26: berapa salary terkecil di setiap departemen?
Select dept_name, min(salary)
from instructor
group by dept_name;

20
Sum() function
• Fungsi sum mengembalikan nilai jumlah dari seluruh nilai dalam
kelompok
• Sintaks:
Sum(expr)

• Contoh 27: berapa jumlah total sks?


select sum(credits)
from course;
• Fungsi sum() dapat digunakan bersama klausa group by
• Contoh 28: berapa jumlah total sks di setiap departemen?
select dept_name, sum(credits)
from course
group by dept_name;

21
Set operations
• SQL menyediakan operator yang berkorespondensi dengan
teori himpunan
• Union

• Intersect

• Except

22
Set Operations
• Contoh 29: Find courses that ran in Fall 2002 or in Spring 2010
select course_id from section where semester = 'Fall' and year = 2002
union
select course_id from section where semester = 'Spring' and year = 2010;

• Contoh 30: Find courses that ran in Fall 2002 and in Spring 2010
select course_id from section where semester = 'Fall' and year = 2002
intersect
select course_id from section where semester = 'Spring' and year = 2007;

• Contoh 31: Find courses that ran in Fall 2002 but not in Spring 2010
select course_id from section where semester = 'Fall' and year = 2002
except
select course_id from section where semester = 'Spring' and year = 2010;

23
Exercises 8
1. Berapakah rerata sks mata kuliah di setiap departemen?
2. Berapakah rerata sks mata kuliah di setiap building?
3. Departemen manakah yang memiliki budget tertinggi?
4. Mahasiswa manakah yang memiliki total sks (tot_cred) tertinggi?
5. Dari semua mahasiswa bimbingan Luo, siapakah yang memiliki total sks
terkecil?
6. Berapa jumlah salary dari seluruh dosen yang berkantor di Taylor building?
7. Berapa banyak mahasiswa yang dibimbing oleh Mahmoud?
8. Berapa banyak mahasiswa yang mengambil mata kuliah Game programming?
9. Siapa saja yang berkantor di Taylor bulding dan yang berkantor di Lamberton
building?
10. Siapakah mahasiswa yang pernah mengambil mata kuliah Corporate Law dan
Game Design?
11. Siapakah mahasiswa yang pernah mengambil Corporate Law namun belum
pernah mengambil Game Design

24
Exercises 8
12. Berapakah rerata total sks mahasiswa yang dibimbing oleh Luo
13. Mata kuliah apakah yang paling banyak ditawarkan
14. Berapa banyak mata kuliah yang ada di tiap departemen?
15. Berapa banyak mahasiswa di tiap departemen?
16. Berapa banyak mahasiswa yang mendapat nilai A pada mata kuliah Mobile
Computing?
17. Berapa banyak nilai A yang diperoleh mahasiswa bernama Rumat?
18. Mata kuliah apa yang pernah ditawarkan pada semester spring tahun 2002
dan spring tahun 2010?
19. Mata kuliah apa yang pernah ditawarkan pada spring 2002 namun tidak
ditawarkan pada spring 2010?

25
Jadwal
Prt Tgl T P
1 05/09 Pengantar Kuliah Basis Data 1 V
2 05/09 Intro to Database System, DB System Environment V
3 12/09 Into to Relational Model V
4 12/09 Intro to SQLite & DB4S V
5 19/09 Query Language: Overview, Data Definition V
6 19/09 SQLite: Data Definition V
7 26/09 Query Language: Basic Structure V
8 26/09 SQLite: Basic Structure V

26
Jadwal
Prt Tgl Teori T P
9 03/10 Relational Database: Relational Algebra V
10 03/10 Relational Database: Relational Algebra V
11 10/10 Query Language: Set Operation, Null Values V
12 10/10 SQLite: Set Operation, Null Values V
13 17/10 Relational Database: Calculus Relational V
14 17/10 Relational Database: Calculus Relational V
15 24/10 UTS V
16 24/10 Project 1 V

27
Jadwal
Prt Tgl Teori T P
17 31/10 Data Modeling: ER Model V
18 31/10 Data Modeling: ER Model V
19 07/11 Query language: Aggregate func., Join Expr V
20 07/11 SQLite V
21 14/11 Data Modeling: ER Model V
22 14/11 Data Modeling: ER Model V
23 21/11 Query language: Views V
24 21/11 SQLite V

28
Jadwal
Prt Tgl Teori T P
25 28/11 Data Modeling Integrity Rules & Normalization V
26 28/11 Data Modeling Integrity Rules & Normalization V
27 05/12 Query Language: Integrity Constraints V
28 05/12 SQLite V
29 12/12 Data Modeling Integrity Rules & Normalization V
30 12/12 Data Modeling Integrity Rules & Normalization V
31 UAS V
32 Project 2 V

29

Anda mungkin juga menyukai

  • Inf0733 06P
    Inf0733 06P
    Dokumen30 halaman
    Inf0733 06P
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 11
    Inf0733 11
    Dokumen37 halaman
    Inf0733 11
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 01P
    Inf0733 01P
    Dokumen19 halaman
    Inf0733 01P
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 06
    Inf0733 06
    Dokumen18 halaman
    Inf0733 06
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 05
    Inf0733 05
    Dokumen50 halaman
    Inf0733 05
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 04
    Inf0733 04
    Dokumen20 halaman
    Inf0733 04
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 03
    Inf0733 03
    Dokumen43 halaman
    Inf0733 03
    Renaldi Fernando
    Belum ada peringkat
  • Inf2033 23
    Inf2033 23
    Dokumen71 halaman
    Inf2033 23
    Renaldi Fernando
    Belum ada peringkat
  • Inf0733 02
    Inf0733 02
    Dokumen59 halaman
    Inf0733 02
    Renaldi Fernando
    Belum ada peringkat