USE IMDB — ensures correct database is active
GO
PRINT ‘|—‘ + REPLICATE(‘+—-‘,15) + ‘|’
PRINT ‘Read the questions below and insert your queries where prompted. When you are finished,
you should be able to run the file as a script to execute all answers sequentially (without errors!)’ + CHAR(10)
PRINT ‘Queries should be well-formatted. SQL is not case-sensitive, but it is good form to
capitalize keywords and table names; you should also put each projected column on its own line
and use indentation for neatness. Example:
SELECT Name,
CustomerID
FROM CUSTOMER
WHERE CustomerID < 106;
All SQL statements should end in a semicolon. Whatever format you choose for your queries, make
sure that it is readable and consistent.’ + CHAR(10)
PRINT ‘Be sure to remove the double-dash comment indicator when you insert your code!’;
PRINT ‘|—‘ + REPLICATE(‘+—-‘,15) + ‘|’ + CHAR(10) + CHAR(10)
GO
GO
PRINT ‘CIS2275, Lab Week 6, Question 1 [3pts possible]:
Write the query to display the name and year of birth for all people born after 1980, who have
directed at least one show (i.e. those who appear at least once in the title_directors table).
Limit results to those who have died (who have a value in the deathYear column).
Columns to display: name_basics.primaryName, name_basics.birthYear
Format name_basics.primaryName as 25 characters wide and sort in descending order by birth year.
Correct results will have 50 rows and will look like this:
Name birthYear
————————- ———–
Anthony Conti 2000
Amanda Todd 1996
Daniel W. Ridge 1996
…
Nick Louvel 1981
Seth Gimlan 1981
Shane Ballard 1981
‘ + CHAR(10)
—
— [Insert your code here]
—
GO
PRINT ‘CIS2275, Lab Week 6, Question 2 [3pts possible]:
Show every genre of television show which has had at least one title with 200 episodes.
i.e. limit results to the titleType ”tvEpisode” in the title_basics table, and to titles
containing a row in the title_episode table with episodeNumber 200.
Columns to display: title_genre.genre
Display only genre name sorted 15 characters wide, and eliminate duplicate values.
Correct results will have 26 rows and will look like this:
Genre
—————
Action
Adult
Adventure
…
Talk-Show
Thriller
War
‘ + CHAR(10)
GO
—
— [Insert your code here]
—
GO
PRINT ‘CIS2275, Lab Week 6, Question 3 [3pts possible]:
Write a common table expression to identify the WORST shows: join title_basics against title_ratings
and limit your results to those with an averageRating value equal to 1. Project the title,
type, and startYear from title_basics; and label your CTE as BADSHOWS.
In the main query, show a breakdown of BADSHOWS grouped by type, along with the total number of
rows for each (i.e. GROUP BY titleType)
Columns to display: titleType, COUNT(*)
Sort results in descending order by COUNT(*).
Correct results will have 10 rows and will look like this:
titleType TOTAL_BAD_SHOWS
———— —————
tvEpisode 314
video 74
…
tvMiniSeries 7
tvShort 2
videoGame 2
‘ + CHAR(10)
GO
—
— [Insert your code here]
—
GO
PRINT ‘CIS2275, Lab Week 6, Question 4 [3pts possible]:
Identify the least popular professions. Show each profession value from the name_profession table,
along with the total number of matching rows (GROUP BY profession). Use the HAVING clause to limit
your results to professions with less than 1,000 rows.
Columns to display: name_profession.profession, COUNT(*)
Correct results will have 3 rows formatted nicely:
Profession TOTAL_PEOPLE
—————————— ————
electrical_department 1
production_department 1
script_department 1
‘ + CHAR(10)
—
— [Insert your code here]
—
GO
GO
PRINT ‘CIS2275, Lab Week 6, Question 5 [3pts possible]:
Use the query from #4 above to display the names of all people belonging to these professions.
Use the previous query as a subquery in the WHERE clause here to limit the results.
Columns to display: name_basics.primaryName, name_profession.profession
Sort results in descending order by primaryName.
Correct results will have 3 rows formatted nicely:
Name Profession
——————– ——————————
Leonardo Aquilini production_department
Eddie A. Reid IV electrical_department
Andrea Devaux script_department
‘ + CHAR(10)
—
— [Insert your code here]
—
GO
GO
PRINT ‘CIS2275, Lab Week 6, Question 6 [3pts possible]:
Show the name of every writer, along with the total number of titles they”ve written (i.e. rows in the
title_writers table). Limit results to those who have written between 5,000 and 10,000 titles (inclusive).
Columns to display: name_basics.primaryName, COUNT(*)
Sort results in descending order by primaryName.
Correct results will have 9 rows formatted nicely. You”re on your own to find out which rows they are.
———————————————————————————————-
‘ + CHAR(10)
—
— [Insert your code here]
—
GO
GO
PRINT ‘CIS2275, Lab Week 6, Question 7 [3pts possible]:
Show the actor and character names for everyone who has performed the same role in more than one
show with the title ”Battlestar Galactica”. i.e. identify the combination of (primaryName, characters)
which occurs in the title_principals table more than once for matching titles.
Columns to display: name_basics.primaryName, title_principals.characters, COUNT(*)
Sort results in ascending order by primaryName.
Correct results will have 4 rows formatted nicely. Hope you get the same ones I got.
———————————————————————————————-
‘ + CHAR(10)
—
— [Insert your code here]
—
GO
GO
PRINT ‘CIS2275, Lab Week 6, Question 8 [3pts possible]:
Identify the names of people who have directed more than five highest-rated shows (i.e. title_ratings.averageRating = 10).
For each of these people, display their names and the total number of shows they have written.
Columns to display: name_basics.primaryName, COUNT(*)
Sort results in descending order by primaryName.
This time you”re on your own to also see how big the result set is (Hint: it is somewhere between 5 and 25).
———————————————————————————————-
‘ + CHAR(10)
—
— [Insert your code here]
—
GO
GO
PRINT ‘CIS2275, Lab Week 6, Question 9 [3pts possible]:
Display the title and running time for all TV specials ( titleType=””tvSpecial” ) from 1982; if the run time is
NULL, substitute zero.
Columns to display: title_basics.primaryTitle, title_basics.runtimeMinutes
Sort in descending numerical order by the resulting calculated run time value.
———————————————————————————————-
‘ + CHAR(10)
—
— [Insert your code here]
—
GO
GO
PRINT ‘CIS2275, Lab Week 6, Question 10 [3pts possible]:
Identify every movie from 1913 (startYear = 1913, titleType=””movie”); limit your results to those with a non-NULL value
in the runtimeMinutescolumn. For each movie, display the primaryTitle and the averageRating value from the title_ratings table.
Use DENSE_RANK() to display the rank based on averageRating (label this RATINGRANK), and also the rank based on runtimeMinutes
(label this LENGTHRANK). Both of these should be based on an asecending sort order.
Columns to display: title_basics.primaryTitle, title_ratings.averageRating,
RATINGRANK, LENGTHRANK
Sort results in ascending order by primaryTitle.
———————————————————————————————-
‘ + CHAR(10)
—
— [Insert your code here]
—
GO
GO
————————————————————————————-
— This is an anonymous program block. DO NOT CHANGE OR DELETE.
————————————————————————————-
BEGIN
PRINT ‘|—‘ + REPLICATE(‘+—-‘,15) + ‘|’;
PRINT ‘ End of CIS275 Lab Week 6’ + REPLICATE(‘ ‘,50) + CONVERT(CHAR(12),GETDATE(),101);
PRINT ‘|—‘ + REPLICATE(‘+—-‘,15) + ‘|’;
END;