
TEORI
a. MIN ( )
Digunakan untuk mencari nilai terkecil dari sekumpulan record.
Contoh:
SELECT MIN(saldo) FROM rekening;
Contoh:
SELECT MIN(saldo) FROM rekening;
Bisa dibatasi dengan WHERE clause sehingga hanya record (-record) tertentu yang ditelusuri:
SELECT MIN(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
SELECT MIN(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
b. MAX ( )
Digunakan untuk mencari nilai terbesar dari sekumpulan record.
Contoh:
SELECT MAX(saldo) FROM rekening;
Digunakan untuk mencari nilai terbesar dari sekumpulan record.
Contoh:
SELECT MAX(saldo) FROM rekening;
Juga bisa dibatasi dengan WHERE clause:
SELECT MAX(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
SELECT MAX(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
c. COUNT ( )
Digunakan untuk menghitung banyaknya record.
Contoh:
a. SELECT COUNT(*) FROM nasabah;
b. SELECT COUNT(nama_nasabah) FROM nasabah;
c. SELECT COUNT(alamat_nasabah) FROM nasabah;
Digunakan untuk menghitung banyaknya record.
Contoh:
a. SELECT COUNT(*) FROM nasabah;
b. SELECT COUNT(nama_nasabah) FROM nasabah;
c. SELECT COUNT(alamat_nasabah) FROM nasabah;
Juga bisa dibatasi dengan WHERE clause.
Jika kita ingin menghitung banyaknya record yang unik (tidak ada pengulangan), gunakan DISTINCT:
SELECT COUNT(DISTINCT alamat_nasabah) FROM nasabah;
SELECT COUNT(DISTINCT alamat_nasabah) FROM nasabah;
select count(sks) as jmlsks from mtkul where sks=4;
d. SUM ( )
Digunakan untuk menjumlahkan nilai-nilai dari sekumpulan record.
Contoh:
SELECT SUM(saldo) FROM rekening;
Digunakan untuk menjumlahkan nilai-nilai dari sekumpulan record.
Contoh:
SELECT SUM(saldo) FROM rekening;
Bisa dibatasi dengan WHERE clause:
SELECT SUM(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
SELECT SUM(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
e) AVG ( )
Digunakan untuk menghitung rata-rata nilai dari sekumpulan record.
Contoh:
SELECT AVG(saldo) FROM rekening;
Digunakan untuk menghitung rata-rata nilai dari sekumpulan record.
Contoh:
SELECT AVG(saldo) FROM rekening;
Bisa dibatasi dengan WHERE clause:
SELECT AVG(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
SELECT AVG(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
Beberapa aggregate functions bisa digabungkan dalam satu perintah SQL:
– SELECT MIN(saldo), MAX(saldo), AVG(saldo) FROM rekening;
– SELECT MIN(saldo), MAX(saldo), AVG(saldo) FROM rekening;
Bisa menambahkan ekspresi aritmetika:
– SELECT SUM(saldo + 1000) FROM rekening;
– SELECT SUM(saldo) + 1000 FROM rekening;
– SELECT MAX(saldo) - MIN(saldo) FROM rekening;
– SELECT SUM(saldo + 1000) FROM rekening;
– SELECT SUM(saldo) + 1000 FROM rekening;
– SELECT MAX(saldo) - MIN(saldo) FROM rekening;
Bisa menggunakan column alias (AS) untuk membuat tampilan lebih profesional.
GROUP BY
Digunakan untuk mengelompokkan sekumpulan record berdasarkan kolom(-kolom) tertentu.
Digunakan untuk mengelompokkan sekumpulan record berdasarkan kolom(-kolom) tertentu.
Contoh:
• SELECT jenis_transaksi FROM transaksi GROUP BY jenis_transaksi;
• SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal;
• SELECT jenis_transaksi FROM transaksi GROUP BY jenis_transaksi;
• SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal;
Hasil yang sama bisa didapatkan dengan menggunakan DISTINCT:
• SELECT DISTINCT jenis_transaksi, tanggal FROM transaksi;
• SELECT DISTINCT jenis_transaksi, tanggal FROM transaksi;
Yang harus diperhatikan ketika menggunakan GROUP BY
• Jika menggunakan GROUP BY, semua field yang ingin ditampilkan dalam SELECT harus tercantum di GROUP BY.
• Contoh yang salah:
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi;
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY tanggal;
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi;
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY tanggal;
• Contoh yang benar:
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal;
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal;
HAVING
Merupakan pasangan dari GROUP BY, digunakan untuk membatasi kelompok yang ditampilkan:
• SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal HAVING jenis_transaksi = ‘kredit’;
Merupakan pasangan dari GROUP BY, digunakan untuk membatasi kelompok yang ditampilkan:
• SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal HAVING jenis_transaksi = ‘kredit’;
Hasil yang sama bisa didapatkan dengan:
• SELECT jenis_transaksi, tanggal FROM transaksi WHERE jenis_transaksi = ‘kredit’ GROUP BY jenis_transaksi, tanggal;
• SELECT jenis_transaksi, tanggal FROM transaksi WHERE jenis_transaksi = ‘kredit’ GROUP BY jenis_transaksi, tanggal;
Yang harus diperhatikan :
• Jika menggunakan HAVING, maka pembatasan dilakukan setelah hasil dikelompokkan dalam GROUP BY.
• Jika menggunakan WHERE, maka pembatasan dilakukan sebelum hasil dikelompokkan dalam GROUP BY.
• Field(-field) yang disebut di HAVING harus ada di GROUP BY, atau berupa aggregate functions.
• Jika menggunakan HAVING, maka pembatasan dilakukan setelah hasil dikelompokkan dalam GROUP BY.
• Jika menggunakan WHERE, maka pembatasan dilakukan sebelum hasil dikelompokkan dalam GROUP BY.
• Field(-field) yang disebut di HAVING harus ada di GROUP BY, atau berupa aggregate functions.
Contoh implementasi
• Contoh yang salah:
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal HAVING jumlah = 50000;
• Contoh yang benar:
– SELECT jenis_transaksi, tanggal FROM transaksi WHERE jumlah = 50000 GROUP BY jenis_transaksi, tanggal;
• Contoh yang salah:
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal HAVING jumlah = 50000;
• Contoh yang benar:
– SELECT jenis_transaksi, tanggal FROM transaksi WHERE jumlah = 50000 GROUP BY jenis_transaksi, tanggal;
Penggabungan GROUP BY dengan Aggregate
GROUP BY sangat cocok untuk aggregate functions. Dengan menggunakan GROUP BY, kita bisa mengelompokkan record-record dan menghitung min, max, count, sum, dan avg untuk masing-masing kelompok.
Contoh:
• SELECT kode_cabang, MIN(saldo), MAX(saldo), COUNT(*), SUM(saldo), AVG(saldo) FROM rekening GROUP BY kode_cabang;
GROUP BY sangat cocok untuk aggregate functions. Dengan menggunakan GROUP BY, kita bisa mengelompokkan record-record dan menghitung min, max, count, sum, dan avg untuk masing-masing kelompok.
Contoh:
• SELECT kode_cabang, MIN(saldo), MAX(saldo), COUNT(*), SUM(saldo), AVG(saldo) FROM rekening GROUP BY kode_cabang;
• Bisa digabungkan dengan tabel join dan ORDER BY:
o SELECT nama_cabang, SUM(saldo) FROM rekening NATURAL JOIN cabang_bank GROUP BY nama_cabang ORDER BY nama_cabang;
o SELECT nama_cabang, SUM(saldo) FROM rekening NATURAL JOIN cabang_bank GROUP BY nama_cabang ORDER BY nama_cabang;
• Hasil di atas menampilkan total saldo untuk masing-masing cabang_bank.
• Perintah SQL di bawah menampilkan banyaknya nasabah yang dilayani oleh masing-masing cabang bank:
o SELECT nama_cabang, COUNT(DISTINCT id_nasabah) FROM cabang_bank NATURAL JOIN rekening NATURAL JOIN nasabah_has_rekening GROUP BY nama_cabang ORDER BY nama_cabang;
o SELECT nama_cabang, COUNT(DISTINCT id_nasabah) FROM cabang_bank NATURAL JOIN rekening NATURAL JOIN nasabah_has_rekening GROUP BY nama_cabang ORDER BY nama_cabang;
• Contoh dengan HAVING:
o SELECT kode_cabang, SUM(saldo), COUNT(*) FROM rekening GROUP BY kode_cabang HAVING SUM(saldo) >= 5000000 ORDER BY kode_cabang;
o SELECT kode_cabang, SUM(saldo), COUNT(*) FROM rekening GROUP BY kode_cabang HAVING SUM(saldo) >= 5000000 ORDER BY kode_cabang;
• Karena SUM(saldo) hanya bisa dihitung setelah hasil dikelompokkan dengan GROUP BY, maka kita harus menggunakan HAVING untuk membatasi hasil berdasarkan SUM(saldo) >= 5000000. Kita tidak bisa menggunakan WHERE.
Source >> http://wandono.blog.unair.ac.id/query-pada-database-tingkat-lanjut.html
CASE
Meskipun SQL bukan merupakan sebuah prosedur bahasa perograman, namun dalam prosesnya dapat dengan bebas mengontrol data yang kembali dari query. Kata
WHERE menggunakan perbandingan untuk mengontrol pemilihan data, sedangkan
CASE perbandingan dalam bentuk output kolom. Jadi intinya penggunaan CASE akan
membentuk output tersendiri berupa sebuah kolom baru dengan data dari operasi yang
di dalamnya.Struktur didalam select seperti berikut
Query yang digunakan untuk simple CASE adalah:
SELECT CASE ("column_name")
WHEN "value1" THEN "result1"
WHEN "value2" THEN "result2"
...
[ELSE "resultN"]
END
FROM "table_name";
WHEN "value1" THEN "result1"
WHEN "value2" THEN "result2"
...
[ELSE "resultN"]
END
FROM "table_name";
VIEW
create view nama_tabel_view as query;
Catatan : Query diatas merupakan query untuk menampilkan data menggunakan query sql select.
Contoh:
create view total_pelanggan as select pelanggan, sum (hargaorder) from pesanan group by pelanggan;
Untuk melihat hasil kita bisa melakukan query select sebagai berikut :
select * from total_pelanggan;
Source >> Mustafa, Aziz.Modul Desain Basis Data.pdf
Hasil Praktikum & Tugas
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Password for user postgres:
psql (9.3.5)
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=# \z
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+------------+-------+-------------------+--------------------------
public | fakultas | table | |
public | fakultas1 | table | |
public | identitas | table | |
public | mahasiswa | table | |
public | mahasiswa1 | table | |
public | pekerjanim | table | |
(6 rows)
postgres=# \l
List of databases
Name | Owner | Encoding | Collate |
Ctype | Access privileges
-----------------+----------+----------+----------------------------+-----------
-----------------+-----------------------
Coba | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
alfan10650046 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
badz10650116 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
fairuz13650100 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
innamul13650019 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
ismail13650047 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
mahdi13650082 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
postgres | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
rofiqo13650060 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
sahrul13650106 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
template0 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 | =c/postgres +
| | | |
| postgres=CTc/postgres
template1 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 | =c/postgres +
| | | |
| postgres=CTc/postgres
(12 rows)
postgres=# \c innamul13650019;
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
You are now connected to database "innamul13650019" as user "postgres".
innamul13650019=# \z
Access privileges
Schema | Name | Type | Access privileges | Column access privi
leges
--------+--------------+-------+---------------------------+--------------------
------
public | fakultas | table | |
public | identitasnim | table | postgres=arwdDxt/postgres+|
| | | innamul=arwdDxt/postgres |
public | ini_dia | view | |
public | mahasiswa | table | |
public | organ_dalam | table | |
public | organ_luar | table | |
(6 rows)
innamul13650019=# select * from mahasiswa;
nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
1 | innamul | aceh | 1 | L
2 | suci | riau | 2 | P
3 | jarjit | melayu | 1 | L
4 | upin | serawak | 2 | L
5 | ipin | serawak | 2 | L
6 | mei-mei | hongkong | 1 | P
7 | ihsan | brunei | 1 | L
(7 rows)
innamul13650019=# select min (nim_mah) from mahasiswa;
min
-----
1
(1 row)
innamul13650019=# select max (nim_mah) from mahasiswa;
max
-----
7
(1 row)
innamul13650019=# select avg (nim_mah) from mahasiswa;
avg
--------------------
4.0000000000000000
(1 row)
innamul13650019=# select avg (nim_mah) from mahasiswa where nim_mah > 4;
avg
--------------------
6.0000000000000000
(1 row)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'L' group by nama_fak;
nama_fak | count
-----------+-------
PSIKOLOGI | 2
SAINTEK | 3
(2 rows)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'P' group by nama_fak;
nama_fak | count
-----------+-------
PSIKOLOGI | 1
SAINTEK | 1
(2 rows)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'L' group by nama_fak having count (
*) =3;
nama_fak | count
----------+-------
SAINTEK | 3
(1 row)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'L' group by nama_fak having count (
*) <= 3;
nama_fak | count
-----------+-------
PSIKOLOGI | 2
SAINTEK | 3
(2 rows)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'P' group by nama_fak having count (
*) <= 3;
nama_fak | count
-----------+-------
PSIKOLOGI | 1
SAINTEK | 1
(2 rows)
innamul13650019=# select *, case when gender = 'L' then 'Lelaki' else 'Wanita' e
nd as Jenis_Kelamin from mahasiswa;
nim_mah | nama_mah | alamat_mah | id_fak | gender | jenis_kelamin
---------+----------+------------+--------+--------+---------------
1 | innamul | aceh | 1 | L | Lelaki
2 | suci | riau | 2 | P | Wanita
3 | jarjit | melayu | 1 | L | Lelaki
4 | upin | serawak | 2 | L | Lelaki
5 | ipin | serawak | 2 | L | Lelaki
6 | mei-mei | hongkong | 1 | P | Wanita
7 | ihsan | brunei | 1 | L | Lelaki
(7 rows)
innamul13650019=# create view coba_lagi as select nim_mah,nama_mah, nama_fak, co
unt(*) from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by
count(*);
ERROR: aggregate functions are not allowed in GROUP BY
LINE 1: ...as where mahasiswa.id_fak=fakultas.id_fak group by count(*);
^
innamul13650019=# create view coba_lagi as select nim_mah,nama_mah, nama_fak, co
unt(*) from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by
nama_mah;
ERROR: column "mahasiswa.nim_mah" must appear in the GROUP BY clause or be used
in an aggregate function
LINE 1: create view coba_lagi as select nim_mah,nama_mah, nama_fak, ...
^
innamul13650019=# create view coba_lagi as select nim_mah,nama_mah, nama_fak fro
m mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by nama_mah;
ERROR: column "mahasiswa.nim_mah" must appear in the GROUP BY clause or be used
in an aggregate function
LINE 1: create view coba_lagi as select nim_mah,nama_mah, nama_fak f...
^
innamul13650019=# create view coba_lagi as select nama_mah,nim_mah, nama_fak, co
unt(*) from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by
nama_mah, nim_mah, nama_fak;
CREATE VIEW
innamul13650019=# select * from coba_lagi;
nama_mah | nim_mah | nama_fak | count
----------+---------+-----------+-------
jarjit | 3 | SAINTEK | 1
ihsan | 7 | SAINTEK | 1
upin | 4 | PSIKOLOGI | 1
innamul | 1 | SAINTEK | 1
mei-mei | 6 | SAINTEK | 1
ipin | 5 | PSIKOLOGI | 1
suci | 2 | PSIKOLOGI | 1
(7 rows)
innamul13650019=#
Database [postgres]:
Port [5432]:
Username [postgres]:
Password for user postgres:
psql (9.3.5)
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=# \z
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+------------+-------+-------------------+--------------------------
public | fakultas | table | |
public | fakultas1 | table | |
public | identitas | table | |
public | mahasiswa | table | |
public | mahasiswa1 | table | |
public | pekerjanim | table | |
(6 rows)
postgres=# \l
List of databases
Name | Owner | Encoding | Collate |
Ctype | Access privileges
-----------------+----------+----------+----------------------------+-----------
-----------------+-----------------------
Coba | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
alfan10650046 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
badz10650116 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
fairuz13650100 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
innamul13650019 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
ismail13650047 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
mahdi13650082 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
postgres | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
rofiqo13650060 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
sahrul13650106 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 |
template0 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 | =c/postgres +
| | | |
| postgres=CTc/postgres
template1 | postgres | UTF8 | English_United States.1252 | English_Un
ited States.1252 | =c/postgres +
| | | |
| postgres=CTc/postgres
(12 rows)
postgres=# \c innamul13650019;
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
You are now connected to database "innamul13650019" as user "postgres".
innamul13650019=# \z
Access privileges
Schema | Name | Type | Access privileges | Column access privi
leges
--------+--------------+-------+---------------------------+--------------------
------
public | fakultas | table | |
public | identitasnim | table | postgres=arwdDxt/postgres+|
| | | innamul=arwdDxt/postgres |
public | ini_dia | view | |
public | mahasiswa | table | |
public | organ_dalam | table | |
public | organ_luar | table | |
(6 rows)
innamul13650019=# select * from mahasiswa;
nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
1 | innamul | aceh | 1 | L
2 | suci | riau | 2 | P
3 | jarjit | melayu | 1 | L
4 | upin | serawak | 2 | L
5 | ipin | serawak | 2 | L
6 | mei-mei | hongkong | 1 | P
7 | ihsan | brunei | 1 | L
(7 rows)
innamul13650019=# select min (nim_mah) from mahasiswa;
min
-----
1
(1 row)
innamul13650019=# select max (nim_mah) from mahasiswa;
max
-----
7
(1 row)
innamul13650019=# select avg (nim_mah) from mahasiswa;
avg
--------------------
4.0000000000000000
(1 row)
innamul13650019=# select avg (nim_mah) from mahasiswa where nim_mah > 4;
avg
--------------------
6.0000000000000000
(1 row)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'L' group by nama_fak;
nama_fak | count
-----------+-------
PSIKOLOGI | 2
SAINTEK | 3
(2 rows)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'P' group by nama_fak;
nama_fak | count
-----------+-------
PSIKOLOGI | 1
SAINTEK | 1
(2 rows)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'L' group by nama_fak having count (
*) =3;
nama_fak | count
----------+-------
SAINTEK | 3
(1 row)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'L' group by nama_fak having count (
*) <= 3;
nama_fak | count
-----------+-------
PSIKOLOGI | 2
SAINTEK | 3
(2 rows)
innamul13650019=# select nama_fak, count (*) from mahasiswa, fakultas where maha
siswa.id_fak = fakultas.id_fak and gender = 'P' group by nama_fak having count (
*) <= 3;
nama_fak | count
-----------+-------
PSIKOLOGI | 1
SAINTEK | 1
(2 rows)
innamul13650019=# select *, case when gender = 'L' then 'Lelaki' else 'Wanita' e
nd as Jenis_Kelamin from mahasiswa;
nim_mah | nama_mah | alamat_mah | id_fak | gender | jenis_kelamin
---------+----------+------------+--------+--------+---------------
1 | innamul | aceh | 1 | L | Lelaki
2 | suci | riau | 2 | P | Wanita
3 | jarjit | melayu | 1 | L | Lelaki
4 | upin | serawak | 2 | L | Lelaki
5 | ipin | serawak | 2 | L | Lelaki
6 | mei-mei | hongkong | 1 | P | Wanita
7 | ihsan | brunei | 1 | L | Lelaki
(7 rows)
innamul13650019=# create view coba_lagi as select nim_mah,nama_mah, nama_fak, co
unt(*) from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by
count(*);
ERROR: aggregate functions are not allowed in GROUP BY
LINE 1: ...as where mahasiswa.id_fak=fakultas.id_fak group by count(*);
^
innamul13650019=# create view coba_lagi as select nim_mah,nama_mah, nama_fak, co
unt(*) from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by
nama_mah;
ERROR: column "mahasiswa.nim_mah" must appear in the GROUP BY clause or be used
in an aggregate function
LINE 1: create view coba_lagi as select nim_mah,nama_mah, nama_fak, ...
^
innamul13650019=# create view coba_lagi as select nim_mah,nama_mah, nama_fak fro
m mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by nama_mah;
ERROR: column "mahasiswa.nim_mah" must appear in the GROUP BY clause or be used
in an aggregate function
LINE 1: create view coba_lagi as select nim_mah,nama_mah, nama_fak f...
^
innamul13650019=# create view coba_lagi as select nama_mah,nim_mah, nama_fak, co
unt(*) from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by
nama_mah, nim_mah, nama_fak;
CREATE VIEW
innamul13650019=# select * from coba_lagi;
nama_mah | nim_mah | nama_fak | count
----------+---------+-----------+-------
jarjit | 3 | SAINTEK | 1
ihsan | 7 | SAINTEK | 1
upin | 4 | PSIKOLOGI | 1
innamul | 1 | SAINTEK | 1
mei-mei | 6 | SAINTEK | 1
ipin | 5 | PSIKOLOGI | 1
suci | 2 | PSIKOLOGI | 1
(7 rows)
innamul13650019=#
Evaluasi Perbandingan DBMS
Beda dari modul-modul yang sebelumnya, pada pertemuan kali ini ada yang sempat bikin frustasi dan yang sama sekali ngga disangka-sangka, pas ngerjain soal yang pake "COUNT", "MAX, "MIN", itu sama sekali ngga bisa, aku cari-cari di internet ngga ada solusi dan akhirnya dikasih tau sama temen kalo sebenarnya itu ngga boleh pake spasi waktu di query "COUNT[no space]()", dan sebelumnya aku pake spasi dan its not work mulai jam 3 pagi aku kerjain sampe sore baru bisa -_-.
Dan saran aku kalo kalian pake SQLYog, ataupun MySQL jangan sekali-kali pake spasi diantara query diatas dengan tanda kurung yang dipake setelahnya, jangan samakan dengan PostgreSQL yang ngga masalah dengan spasi. Agak ironis sih soalnya biasanya PostgreSQL yang ngga boleh ketinggalan tanda ";" dan MySQL ngga masalah, pada query kali ini malah sebaliknya.
Beda dari modul-modul yang sebelumnya, pada pertemuan kali ini ada yang sempat bikin frustasi dan yang sama sekali ngga disangka-sangka, pas ngerjain soal yang pake "COUNT", "MAX, "MIN", itu sama sekali ngga bisa, aku cari-cari di internet ngga ada solusi dan akhirnya dikasih tau sama temen kalo sebenarnya itu ngga boleh pake spasi waktu di query "COUNT[no space]()", dan sebelumnya aku pake spasi dan its not work mulai jam 3 pagi aku kerjain sampe sore baru bisa -_-.
Dan saran aku kalo kalian pake SQLYog, ataupun MySQL jangan sekali-kali pake spasi diantara query diatas dengan tanda kurung yang dipake setelahnya, jangan samakan dengan PostgreSQL yang ngga masalah dengan spasi. Agak ironis sih soalnya biasanya PostgreSQL yang ngga boleh ketinggalan tanda ";" dan MySQL ngga masalah, pada query kali ini malah sebaliknya.
Kesimpulan
Setiap query yang bisa digunakan berfungsi untuk mempermudah programmer dalam pengkodingan maupun dalam mempersingkat waktu, seperti contoh pada penggunaan VIEW diatas misalnya, dengan adanya VIEW maka kita tidak perlu menulis query yang sama untuk beberapa kali sesi presentasi, cukup dipaketkan dan dijalankan dengan query yang lebih singkat. Terimakasih atas kunjungannya dan tunggu postingan selanjutnya setiap hari minggu perminggunya, tapi kayaknya bakal puasa satu kali (minggu depan) soalnya ntar ada ujian, jadi kemungkinan ngga bakal terbit dah -_-
Setiap query yang bisa digunakan berfungsi untuk mempermudah programmer dalam pengkodingan maupun dalam mempersingkat waktu, seperti contoh pada penggunaan VIEW diatas misalnya, dengan adanya VIEW maka kita tidak perlu menulis query yang sama untuk beberapa kali sesi presentasi, cukup dipaketkan dan dijalankan dengan query yang lebih singkat. Terimakasih atas kunjungannya dan tunggu postingan selanjutnya setiap hari minggu perminggunya, tapi kayaknya bakal puasa satu kali (minggu depan) soalnya ntar ada ujian, jadi kemungkinan ngga bakal terbit dah -_-
No comments:
Post a Comment