Anda di halaman 1dari 4

Nama : M.

AMARUNA SAHONA
Npm :2021110117
Prodi :Teknik Informatika
Kelas :Karyawan

SOAL
Kerjakan soal nomor 55 s.d 60. Anda cukup mengirimkan tangkapan layar pekerjaan Anda
di komputer, yaitu definisi fungsi dan hasil eksekusinya.

DEFINISI FUNGSI
Fungsi yang ditentukan pengguna adalah rutinitas Transact-SQL atau common language
runtime (CLR) yang menerima parameter, melakukan tindakan, seperti perhitungan kompleks, dan
mengembalikan hasil tindakan tersebut sebagai nilai. Nilai yang dikembalikan dapat berupa nilai
skalar (tunggal) atau tabel.

Code:
--55 Daftar Nama barang, total jumlah dan total Rp yg terjual
-- di antara dua tanggal tertentu
CREATE FUNCTION TotalPenjualanBarang (
@TanggalMulai DATE,
@TanggalAkhir DATE
)
RETURNS TABLE
AS
RETURN
SELECT B.Nama AS NamaBarang, SUM(DF.Jumlah) AS TotalJumlah, SUM(DF.Jumlah
* DF.HargaSatuan) AS TotalPenjualan
FROM Barang B
INNER JOIN DetilFaktur DF ON B.KdBarang = DF.KdBarang
INNER JOIN Faktur F ON DF.NoFaktur = F.NoFaktur
WHERE F.Tgl BETWEEN @TanggalMulai AND
@TanggalAkhir GROUP BY B.Nama;

--56 Menghitung Rp hasil penjualan barang untuk


-- kode barang tertentu pada tgl tertentu.
CREATE FUNCTION TotalPenjualanBarangPerTanggal (
@KodeBarang CHAR(4),
@Tanggal DATE
)
RETURNS TABLE
AS
RETURN
SELECT B.Nama, SUM(DF.Jumlah * DF.HargaSatuan) AS TotalPenjualan
FROM Faktur F
INNER JOIN DetilFaktur DF ON F.NoFaktur = DF.NoFaktur
INNER JOIN Barang B ON DF.KdBarang = B.KdBarang
WHERE DF.KdBarang = @KodeBarang AND F.Tgl =
@Tanggal GROUP BY B.Nama;

--57 Daftar nama pelanggan, total Rp yg dibelanjakannya


-- di antara dua tanggal tertentu
CREATE FUNCTION TotalPenjualanPelanggan (
@TanggalMulai DATE,
@TanggalAkhir DATE
)
RETURNS TABLE
AS
RETURN
SELECT P.Nama AS NamaPelanggan, SUM(DF.Jumlah * DF.HargaSatuan) AS
TotalPenjualan
FROM Pelanggan P
INNER JOIN Faktur F ON P.IdPelanggan = F.IdPelanggan
INNER JOIN DetilFaktur DF ON F.NoFaktur = DF.NoFaktur
WHERE F.Tgl BETWEEN @TanggalMulai AND @TanggalAkhir
GROUP BY P.Nama;

--58 Menghitung total jumlah unit barang terjual untuk kode barang
-- tertentu pada tahun tertentu.
CREATE FUNCTION TotalJumlahTerjual (
@KodeBarang CHAR(4),
@Tahun SMALLINT
)
RETURNS TABLE
AS
RETURN
SELECT SUM(DF.Jumlah) AS TotalJumlah
FROM DetilFaktur DF
INNER JOIN Faktur F ON DF.NoFaktur = F.NoFaktur
WHERE DF.KdBarang = @KodeBarang AND YEAR(F.Tgl) = @Tahun;

--59 Daftar Tgl, total Rp hasil penjualan per tgl pada bulan
-- dan tahun tertentu.
CREATE FUNCTION TotalPenjualanPerTanggal (
@Bulan TINYINT,
@Tahun SMALLINT
)
RETURNS TABLE
AS
RETURN
SELECT F.Tgl, SUM(DF.Jumlah * DF.HargaSatuan) AS TotalPenjualan
FROM Faktur F
INNER JOIN DetilFaktur DF ON F.NoFaktur = DF.NoFaktur
WHERE MONTH(F.Tgl) = @Bulan AND YEAR(F.Tgl) = @Tahun
GROUP BY F.Tgl;

--60 Daftar Hari, Tgl, KdBarang, total jumlah barang terjual serta
-- Rp hasil penjualan pada tahun tertentu
CREATE FUNCTION TotalPenjualanPerHari (
@Tahun SMALLINT
)
RETURNS TABLE
AS
RETURN
SELECT DATEPART(WEEKDAY, F.Tgl) AS Hari, F.Tgl, DF.KdBarang,
SUM(DF.Jumlah) AS TotalJumlah, SUM(DF.Jumlah * DF.HargaSatuan) AS
TotalPenjualan
FROM Faktur F
INNER JOIN DetilFaktur DF ON F.NoFaktur = DF.NoFaktur
WHERE YEAR(F.Tgl) = @Tahun
GROUP BY DATEPART(WEEKDAY, F.Tgl), F.Tgl, DF.KdBarang;

-- 55
SELECT * FROM dbo.TotalPenjualanBarang('2014-01-01', '2014-12-31');

-- 56
SELECT * FROM dbo.TotalPenjualanBarangPerTanggal('KB03', '2014-04-14');

-- 57
SELECT * FROM dbo.TotalPenjualanPelanggan('2014-01-01', '2014-12-31');

-- 58
SELECT * FROM dbo.TotalJumlahTerjual('KB03', 2014);

-- 59
SELECT * FROM dbo.TotalPenjualanPerTanggal(4, 2014);

-- 60
SELECT * FROM dbo.TotalPenjualanPerHari(2014);
Output:

Anda mungkin juga menyukai