Senin, 23 April 2012

Praktikum SBD 7c


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

Tidak ada komentar: