Tugas I
Sistem Manajemen Basis Data
Ketentuan
- Sifat: Perorangan
- Waktu: 2 hari, dikumpulkan dalam bentuk file dengan ekstension doc atau rtf paling lambat tanggal 15 Februari 2006 jam 23.59 ke email ke masing-masing pengajar
- Pinalti Keterlambatan: nilai dikurangi 10% per hari
Soal 1
Jelaskan dengan uraian singkat, relationships antara tabel RETAIL_ORDER, ORDER_ITEM dan SKU_DATA pada database berikut:
Jawaban
Tabel RETAIL_ORDER menyimpan data summary order suatu toko (store) pada setiap bulannya. Detail dari order tersebut disimpan pada tabel ORDER_ITEM. Relationship/hubungan antara tabel RETAIL_ORDER dengan tabel ORDER_ITEM adalah bahwa data-data pada tabel ORDER_ITEM mengacu kepada suatu order pada tabel RETAIL_ORDER yang difasilitasi melalui kolom OrderNumber pada kedua tabel tersebut.
Kolom SKU (Stock Keeping Unit) pada tabel ORDER_ITEM menghubungkan tabel tersebut dengan tabel SKU_DATA. Data-data pada tabel SKU_DATA yang dikodekan dengan nilai pada kolom SKU menjadi referensi bagi nilai kolom SKU pada tabel ORDER_ITEM.
Soal 2
Pada tabel INVENTORY berikut:
INVENTORY (SKU, Description, QuantityOnHand, QuantityOnOrder, Warehouse)
Asumsi data kolom SKU, Description dan Warehouse adalah character dan data kolom QuantityOnHand dan QuantityOnOrder adalah numerik
- Tuliskan SQL query untuk menampilkan SKU dan Description
Jawaban
Select SKU, Descripton
From INVENTORY
- Tuliskan SQL query untuk menampilkan Description dan SKU
Jawaban
Select Description, SKU
From INVENTORY
- Tuliskan SQL query untuk menampilkan Warehouse
Jawaban
Select Warehouse
From INVENTORY
- Tuliskan SQL query untuk menampilkan Warehouse tanpa adanya duplikasi
Jawaban
Select distinct Warehouse
From INVENTORY
- Tuliskan SQL query untuk menampilkan semua kolom tanpa menggunakan *
Jawaban
Select SKU, Description, QuantityOnHand, QuantityOnOrder,
Warehouse
From INVENTORY
- Tuliskan SQL query untuk menampilkan semua kolom dengan menggunakan *
Jawaban
Select *
From INVENTORY
- Tuliskan SQL query untuk menampilkan semua data untuk suatu produk yang memiliki QuantityOnHand lebih dari 0
Jawaban
Select *
From INVENTORY
Where QuantityOnHand > 0
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang memiliki QuantityOnHand sama dengan 0
Jawaban
Select *
From INVENTORY
Where QuantityOnHand = 0
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang memiliki QuantityOnHand sama dengan 0, diurutkan secara descending berdasarkan Warehouse
Jawaban
Select SKU, Description
From INVENTORY
Where QuantityOnHand = 0
Order by Warehouse Desc
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang memiliki QuantityOnHand sama dengan 0, diurutkan secara descending berdasarkan Warehouse dan secara ascending pada QuantityOnHand
Jawaban
Select SKU, Description
From INVENTORY
Where QuantityOnHand = 0
Order by Warehouse Desc, QuantityOnHand Asc
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang disimpan di Warehouse Seatle, Chicago atau New Jersey. Tanpa mengunakan IN
Jawaban
Select SKU, Description
From INVENTORY
Where Warehouse = ‘Seatle’ Or Warehouse = ‘Chicago’
Or Warehouse = ‘New Jersey’
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang disimpan di Warehouse Seatle, Chicago atau New Jersey. Menggunakan IN
Jawaban
Select SKU, Description
From INVENTORY
Where Warehouse In (‘Seatle’, ‘Chicago’, ‘New Jersey’)
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang tidak disimpan di Warehouse Seatle, Chicago atau New Jersey. Tanpa mengunakan NOT IN
Jawaban
Select SKU, Description
From INVENTORY
Where Warehouse <> ‘Seatle’ Or Warehouse <> ‘Chicago’
Or Warehouse <> ‘New Jersey’
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang tidak disimpan di Warehouse Seatle, Chicago atau New Jersey. Mengunakan NOT IN
Jawaban
Select SKU, Description
From INVENTORY
Where Warehouse Not In (‘Seatle’, ‘Chicago’, ‘New Jersey’)
- Tuliskan SQL query untuk menampilkan SKU, Description dan QuantityOnHand suatu produk yang memiliki QuantityOnHand lebih dari 1 dan kurang dari 10. Menggunakan BETWEEN
Jawaban
Select SKU, Description, QuantityOnHand
From INVENTORY
Where QuantityOnHand Between 1 And 10
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk dimana Description produk tersebut dimulai dengan kata ‘Half-dome’
Jawaban
Select SKU, Description
From INVENTORY
Where Description Like ‘Half-dome%’
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk dimana Description produk tersebut mengandung kata ‘Foot’
Jawaban
Select SKU, Description
From INVENTORY
Where Description Like ‘%Foot%’
- Tuliskan SQL query untuk menampilkan Warehouse dan jumlah dari QuantityOnHand, group berdasarkan Warehouse. Nama kolom yang menampilkan hasil penjumlahan adalah TotalItemsOnHand. Hasilnya ditampilkan dengan urutan descending berdasarkan TotalItemsOnHand
Jawaban
Select Warehouse, Sum(QuantityOnHand) As TotalItemsOnHand
From INVENTORY
Group By Warehouse
Order By TotalItemsOnHand Desc
Soal 3
Pada tabel INVENTORY dan WAREHOUSE berikut:
INVENTORY (SKU, Description, QuantityOnHand, QuantityOnOrder, Warehouse)
WAREHOUSE (Warehouse, Manager, SquareFeet)
Asumsi data kolom SKU, Description,Warehouse dan Manager adalah character dan data kolom QuantityOnHand, QuantityOnOrder dan SquareFeet adalah numerik
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang disimpan di Warehouse dimana Warehouse tersebut Managernya adalah ‘Smith’. Gunakan subquery
Jawaban
Select SKU, Description
From INVENTORY
Where Warehouse In
(Select Warehouse
From WAREHOUSE
Where Manager = ‘Smith’)
- Tuliskan SQL query untuk menampilkan SKU dan Description suatu produk yang disimpan di Warehouse dimana Warehouse tersebut Managernya adalah ‘Smith’. Gunakan join
Jawaban
Select INVENTORY.SKU, INVENTORY.Description
From INVENTORY, WAREHOUSE
Where INVENTORY.Warehouse = WAREHOUSE.Warehouse And
WAREHOUSE.Manager = ‘Smith’
- Tuliskan SQL query untuk menampilkan Warehouse dan rata-rata QuantityOnHand suatu produk yang disimpan di Warehouse dimana Warehouse tersebut Managernya adalah ‘Smith’. Gunakan subquery
Jawaban
Select Warehouse, Avg(QuantityOnHand)
From INVENTORY
Where Warehouse In
(Select Warehouse
From WAREHOUSE
Where Manager = ‘Smith’)
- Tuliskan SQL query untuk menampilkan Warehouse dan rata-rata QuantityOnHand suatu produk yang disimpan di Warehouse dimana Warehouse tersebut Managernya adalah ‘Smith’. Gunakan join
Jawaban
Select INVENTORY.Warehouse, Avg(INVENTORY.QuantityOnHand)
From INVENTORY, WAREHOUSE
Where INVENTORY.Warehouse = WAREHOUSE.Warehouse And
WAREHOUSE.Manager = ‘Smith’
- Tuliskan SQL query untuk menampilkan Warehouse, Manager dan QuantityOnHand suatu produk yang disimpan di Warehouse dimana Warehouse tersebut Managernya adalah ‘Smith’. Gunakan join
Jawaban
Select INVENTORY.Warehouse, WAREHOUSE.Manager,
INVENTORY.QuantityOnHand
From INVENTORY, WAREHOUSE
Where INVENTORY.Warehouse = WAREHOUSE.Warehouse And
WAREHOUSE.Manager = ‘Smith’
- Jelaskan mengapa pada soal nomor e diatas tidak bisa menggunakan subquery
Jawaban
Karena dengan subquery kita hanya bisa menampilkan data-data pada kolom-kolom suatu tabel yang diproses pada query utama (top table).
Pada kasus ini, selain kita harus menampilkan data Warehouse dan data QuantityOnHand yang bisa kita dapatkan dari tabel INVENTORY yang diproses pada query utama (top table), kita juga harus menampilkan data Manager dimana data tersebut adalah data pada tabel WAREHOUSE. Tabel WAREHOUSE tersebut diproses pada subquery, tidak pada query utama.
Jadi kita tidak bisa melakukannya dengan metode subquery.
- Jelaskan apa yang membedakan penggunaan subquery dan join
Jawaban
Subquery dan join sama-sama digunakan jika kita akan memproses lebih dari satu tabel (querying multiple table).
Yang membedakannya adalah jika kita ingin mendapatkan atau menampilkan data yang disimpan pada tabel kedua, ketiga atau seterusnya atau selain data pada tabel pertama maka kita harus menggunakan join, karena subquery tidak bisa melakukannya. Apa yang bisa dilakukan oleh subquery juga bisa dilakukan oleh join.