Tuitorial By: Prof

CIS275, Lab Week 6,

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;

 

 

Budget: $10.00

Due on: May 06, 2020 00:00

Posted: 5 months ago.

Answers (0)