Академический Документы
Профессиональный Документы
Культура Документы
-- Queries
-- Question 1: Produce a list of the latest movies by genres for the current month.
SELECT
m.mov_name AS 'Movie Title',
g.gen_name AS 'Genre',
m.mov_rel AS 'Movie Release Date'
FROM
MOVIE m,
GENRE g,
MOVIE_GENRE mg
WHERE
(MONTH(m.mov_rel) = 03) AND
(m.mov_id = mg.mov_id) AND
(mg.gen_id = g.gen_id)
-- Question 2: Produce a list of the top 3 most popular movies for a given genre
for the current month.
SELECT
TOP 3 AVG(f.fb_rate) AS 'Top 3 Popular Movies',
m.mov_name AS 'Movie Title'
FROM
FEEDBACK f,
MOVIE m
WHERE
(f.mov_id = m.mov_id)
GROUP BY
m.mov_name
ORDER BY
AVG(f.fb_rate) DESC
SELECT
r.bran_id AS 'Branch Number',
i.sto_id AS 'Copy Number',
c.mem_id AS 'Member ID',
c.mem_fname + ' ' + c.mem_lname AS 'Member Name',
m.mov_name AS 'Movie Title',
g.gen_name AS 'Genre',
r.ren_bd AS 'Date Borrowed',
r.ren_dd AS 'Due Date'
FROM
INVENTORY i,
MEMBER c,
RENTED_INVENTORY ri,
MOVIE m,
RENTAL r,
MOVIE_GENRE mg,
GENRE g,
MEMBERSHIP ms
WHERE
(i.sto_id = ri.sto_id) AND
(c.mem_id = r.mem_id) AND
(m.mov_id = mg.mov_id) AND
(m.mov_id = i.mov_id) AND
(mg.gen_id = g.gen_id) AND
(r.ren_id = ri.ren_id) AND
(ms.bran_id = r.bran_id) AND
(ms.mem_id = c.mem_id) AND
(r.bran_id = 'B005')
GROUP BY
i.sto_id,
c.mem_id,
c.mem_fname,
c.mem_lname,
m.mov_name,
m.mov_id,
g.gen_name,
r.ren_bd,
r.ren_dd,
r.bran_id
-- Question 4: Produce a listing showing the total number of DVDs currently rented
by each member from all of Movies Abdundant�s branches. Sort your list in
alphabetical order of the members� last names.
SELECT
c.mem_fname + ' ' + c.mem_lname AS 'Member Name',
count (ri.sto_id) AS 'Total Number of DVDs rented'
FROM
MEMBER c,
RENTAL r,
RENTED_INVENTORY ri,
INVENTORY i
WHERE
(r.mem_id = c.mem_id) AND
(r.ren_id = ri.ren_id) AND
(ri.sto_id = i.sto_id) AND
(r.ren_stat = 'R')
GROUP BY
c.mem_lname,
c.mem_fname
ORDER BY
c.mem_lname
SELECT
(m.mov_name) AS 'Movie Title',
(bran_id) AS 'Branch Number',
COUNT (sto_id) AS 'Total in-stock',
SUM (case when sto_stat = 'N' then 1 else 0 end) AS 'Total copies rented
',
SUM (case when sto_stat = 'A' then 1 else 0 end) AS 'Total copies
available'
FROM
INVENTORY i,
MOVIE m
WHERE
(i.mov_id = m.mov_id)
GROUP BY
i.bran_id,
m.mov_name
SELECT
(g.gen_name) AS 'Genre',
COUNT(sto_id) AS 'Total copies of DVD'
FROM
INVENTORY i,
MOVIE m,
MOVIE_GENRE mg,
GENRE g
WHERE
(i.mov_id = m.mov_id) AND
(m.mov_id = mg.mov_id) AND
(mg.gen_id) = (g.gen_id)
GROUP BY
g.gen_name
-- Question 7: Show a list of all members with outstanding fines for overdue DVDs.
List the member IDs, names, movie IDs, movie title, date borrowed, date due, total
number of days overdue and fine incurred for each overdue DVD.
SELECT
r.mem_id AS 'Member Number',
c.mem_fname + ' ' + c.mem_lname AS 'Member Name',
ri.sto_id AS 'Rented Copies ID',
m.mov_name AS 'Movie Title',
r.ren_bd AS 'Date Borrowed',
r.ren_dd AS 'Date Due',
r.ren_rd AS 'Overdue Days',
r.ren_rd * 8 AS 'Fine'
FROM
RENTAL r,
MEMBER c,
RENTED_INVENTORY ri,
MOVIE m,
INVENTORY i
WHERE
(r.mem_id = c.mem_id) AND
(r.ren_id = ri.ren_id) AND
(ri.sto_id = i.sto_id) AND
(i.mov_id = m.mov_id) AND
(r.ren_dd > 0) AND
(r.ren_stat = 'R')
GROUP BY
r.ren_id,
r.mem_id,
c.mem_fname,
c.mem_lname,
ri.sto_id,
m.mov_id,
m.mov_name,
r.ren_bd,
r.ren_dd,
r.ren_rd
ORDER BY
r.ren_dd DESC,
r.ren_rd
-- Question 8: Produce a list of movies with the total number of various feedback
ratings given by members for each movie, i.e. based on the scores (1-3 which is
1=bad, 2=average and 3=good).
SELECT
f.mov_id AS 'Movie ID ',
m.mov_name AS 'Movie Title',
COUNT (*) AS 'Number of Feedback Ratings',
AVG (f.fb_rate) AS 'Average of Feedback Ratings',
(CASE
WHEN AVG(f.fb_rate) <= 1 THEN 'Bad'
WHEN AVG(f.fb_rate) <= 2 THEN 'Average'
WHEN AVG(f.fb_rate) <= 3 THEN 'Good'
END) AS 'Comments'
FROM
MOVIE m,
FEEDBACK f
WHERE
(f.mov_id = m.mov_id)
GROUP BY
f.mov_id,
m.mov_name
SELECT
b.bran_id AS 'Branch Number',
b.empl_fname AS 'Manager Name',
SUM (CASE
WHEN e.empl_location = 'S' THEN 1 ELSE 0 END) AS 'Number of
Supervisor',
SUM (CASE
WHEN e.empl_gen = 'M' THEN 1 ELSE 0 END) AS 'Total number of Male
Employees',
SUM (CASE
WHEN e.empl_gen = 'F' THEN 1 ELSE 0 END) AS 'Total number of
Female Employees'
FROM
EMPLOYEE e,
EMPLOYEE b
WHERE
(e.bran_id = b.bran_id)
GROUP BY
b.bran_id,
b.empl_fname