Soal
Case
1.
Tampilkan EmployeeID, EmployeeName dimana Transaksi pada hari Kamis atau
pada hari Jumat dan selisih antara
TransactionDate dan ’15 January 2010’
kurang dari 8 hari.
(join,
datename, weekday, datediff, day)
2.
Tampilkan MenuID, MenuName dan MenuType dimana MenuType merupakan ‘Food’ dan
panjang MenuName merupakan angka ganjil.
(join, len)
3.
Tampilkan CustomerID, CustomerName, EmployeeName dimana email dari customer mengandung
kata ‘yahoo’ dan selisih panjang EmployeeName dengan CustomerName kurang dari
3.
(join, len, like)
4.
Tampilkan EmployeeID dan WorkDays (didapat dari
jumlah Qty pangkat 3) dimana
WorkDays lebih dari 30 digabung dengan CustomerID dan WorkDays (didapat dari
jumlah hasil pembulatan akar pangkat dua dari Qty) dimana digit terakhir CustomerID di modulus 5 sama dengan 0.
(join, sum, power, union, group by, having, round,
sqrt, right)
5.
Tampilkan CustomerID, CustomerName, TotalVisiting
(didapat dari 2 digit terakhir TransactionID + bulan dari TransactionDate + 2
digit terakhir dari CustomerID + digit terakhir dari EmployeeID) dimana TotalVisiting dibagi dengan
panjang CustomerName kurang dari 10 dan huruf ke-2 dari CustomerName berkisar
antara ‘k’ hingga ‘p’.
(join, right, month, substring, like, len)
6.
Tampilkan MenuTypeID, MenuType, Price dimana MenuType merupakan ‘Beverage’
atau ‘Dessert’ dan Price di antara 5000 dan 12000 dan TransactionDate terjadi
di antara tanggal 2 dan tanggal 6.
(join, like, between, day)
7.
Tampilkan TransactionID, MenuID, CustomerName dimana bulan TransactionDate terjadi
pada bulan January, hasil dari 2 digit terakhir TransactionID dipangkatkan
digit terakhir MenuID lebih dari 50 dan MenuName terdiri dari 3 kata atau
lebih.
(join, datename, month, power,
right, like)
8.
Tampilkan TransactionID, CustomerName,
EmployeeName, TransactionDate dan Makanan Terjual (didapat dari banyaknya menu
yang terjual) dimana CustomerName
mengandung huruf ‘a’, EmployeeName mengandung huruf ‘o’ urutkan berdasarkan
CustomerName. Tampilkan pula jumlah dari
Makanan Terjual.
(join,
count, like, group by, order by, compute, sum)
9.
Berikan hak akses kepada salah satu teman anda untuk melakukan insert,
update, delete pada tabel MsEmployee.
(grant)
10. Cabutlah hak akses delete
yang telah diberikan kepada teman anda pada tabel MsEmployee.
(revoke)
Jawab
--SOAL NO 1
select
me.EmployeeID, EmployeeName
from
MsEmployee me join TrHeaderTransaction th on me.EmployeeID = th.EmployeeID
and (datename(weekday,TransactionDate) = 'Friday' or datename(weekday,TransactionDate) = 'Thursday')
and datediff(day,TransactionDate,'2010-01-15') < 8
--SOAL NO 2
SELECT
MenuID, MenuName, MenuType
FROM
MsMenu mm join MsMenuType mt on mm.MenuTypeID = mt.menuTypeID
and MenuType = 'Food'
and len(MenuName) % 2 = 1
--SOAL NO 3
select
mc.CustomerID, CustomerName, EmployeeName
FROM
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.customerID
join MsEmployee me on th.EmployeeID = me.EmployeeID
and email like '%yahoo%'
and len(EmployeeName) - len(CustomerName) < 3
--SOAL NO 4
select
me.EmployeeID, WorkDays = sum(power(Qty,3))
FROM
MsEmployee me join TrHeaderTransaction th on me.EmployeeID = th.EmployeeID
join TrDetailTransaction td on th.TransactionID = td.TransactionID
Group by
me.EmployeeID
having
sum(power(Qty,3)) > 30
UNION
select
mc.CustomerID, WorkDays = sum(round(sqrt(Qty),0))
FROM
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.CustomerID
join TrDetailTransaction td on th.TransactionID = td.TransactionID
and right(mc.CustomerID,1) % 5 = 0
group by
mc.CustomerID
--SOAL NO 5
select
mc.CustomerID, customerName,
TotalVisiting = right(transactionID,2) + month(transactionDate) + right(mc.CustomerID,2) + right(me.employeeID,1)
from
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.CustomerID
join MsEmployee me on th.EmployeeID = me.employeeID
and right(transactionID,2) + month(transactionDate) + right(mc.CustomerID,2) + right(me.employeeID,1) / len(CustomerName) < 10
and substring(CustomerName,2,1) like '[k-p]'
--SOAL NO 6
select
mt.MenuTypeID, MenuType, Price
from
MsMenuType mt join MsMenu mm on mt.menuTypeID = mm.menuTypeID
join TrDetailTransaction td on mm.MenuID = td.menuID
join TrHeaderTransaction th on th.TransactionID = td.TransactionID
and (MenuType like 'Dessert' or MenuType like 'Beverage')
and price between 5000 and 12000
and day(TransactionDate) between 2 and 6
--SOAL NO 7
select
th.TransactionID, mm.MenuID, CustomerName
from
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.CustomerID
join TrDetailTransaction td on th.TransactionID = td.TransactionID
join MsMenu mm on td.MenuID = mm.menuID
and datename(month,TransactionDate) = 'January'
and power(right(th.transactionID,2),right(mm.menuID,1)) > 50
and MenuName like '% % %'
--SOAL NO 8
select
th.TransactionID, CustomerName, EmployeeName, TransactionDate, [Makanan Terjual] = count(mm.menuID)
from
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.CustomerID
join MsEmployee me on th.EmployeeID = me.EmployeeID
join TrDetailTransaction td on th.TransactionID = td.TransactionID
join MsMenu mm on td.MenuID = mm.menuID
and CustomerName like '%a%'
and EmployeeName like '%o%'
group by
th.TransactionID,
CustomerName,
EmployeeName,
TransactionDate
order by
customerName
compute sum(count(mm.menuID))
--SOAL NO 9
--JAWAB
grant insert, update, delete on MsEmployee to xxx
--SOAL NO 10
revoke delete on MsEmployee from xxx
select
me.EmployeeID, EmployeeName
from
MsEmployee me join TrHeaderTransaction th on me.EmployeeID = th.EmployeeID
and (datename(weekday,TransactionDate) = 'Friday' or datename(weekday,TransactionDate) = 'Thursday')
and datediff(day,TransactionDate,'2010-01-15') < 8
--SOAL NO 2
SELECT
MenuID, MenuName, MenuType
FROM
MsMenu mm join MsMenuType mt on mm.MenuTypeID = mt.menuTypeID
and MenuType = 'Food'
and len(MenuName) % 2 = 1
--SOAL NO 3
select
mc.CustomerID, CustomerName, EmployeeName
FROM
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.customerID
join MsEmployee me on th.EmployeeID = me.EmployeeID
and email like '%yahoo%'
and len(EmployeeName) - len(CustomerName) < 3
--SOAL NO 4
select
me.EmployeeID, WorkDays = sum(power(Qty,3))
FROM
MsEmployee me join TrHeaderTransaction th on me.EmployeeID = th.EmployeeID
join TrDetailTransaction td on th.TransactionID = td.TransactionID
Group by
me.EmployeeID
having
sum(power(Qty,3)) > 30
UNION
select
mc.CustomerID, WorkDays = sum(round(sqrt(Qty),0))
FROM
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.CustomerID
join TrDetailTransaction td on th.TransactionID = td.TransactionID
and right(mc.CustomerID,1) % 5 = 0
group by
mc.CustomerID
--SOAL NO 5
select
mc.CustomerID, customerName,
TotalVisiting = right(transactionID,2) + month(transactionDate) + right(mc.CustomerID,2) + right(me.employeeID,1)
from
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.CustomerID
join MsEmployee me on th.EmployeeID = me.employeeID
and right(transactionID,2) + month(transactionDate) + right(mc.CustomerID,2) + right(me.employeeID,1) / len(CustomerName) < 10
and substring(CustomerName,2,1) like '[k-p]'
--SOAL NO 6
select
mt.MenuTypeID, MenuType, Price
from
MsMenuType mt join MsMenu mm on mt.menuTypeID = mm.menuTypeID
join TrDetailTransaction td on mm.MenuID = td.menuID
join TrHeaderTransaction th on th.TransactionID = td.TransactionID
and (MenuType like 'Dessert' or MenuType like 'Beverage')
and price between 5000 and 12000
and day(TransactionDate) between 2 and 6
--SOAL NO 7
select
th.TransactionID, mm.MenuID, CustomerName
from
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.CustomerID
join TrDetailTransaction td on th.TransactionID = td.TransactionID
join MsMenu mm on td.MenuID = mm.menuID
and datename(month,TransactionDate) = 'January'
and power(right(th.transactionID,2),right(mm.menuID,1)) > 50
and MenuName like '% % %'
--SOAL NO 8
select
th.TransactionID, CustomerName, EmployeeName, TransactionDate, [Makanan Terjual] = count(mm.menuID)
from
MsCustomer mc join TrHeaderTransaction th on mc.CustomerID = th.CustomerID
join MsEmployee me on th.EmployeeID = me.EmployeeID
join TrDetailTransaction td on th.TransactionID = td.TransactionID
join MsMenu mm on td.MenuID = mm.menuID
and CustomerName like '%a%'
and EmployeeName like '%o%'
group by
th.TransactionID,
CustomerName,
EmployeeName,
TransactionDate
order by
customerName
compute sum(count(mm.menuID))
--SOAL NO 9
--JAWAB
grant insert, update, delete on MsEmployee to xxx
--SOAL NO 10
revoke delete on MsEmployee from xxx
Tidak ada komentar:
Posting Komentar