SQL | Creating tables exercise | Create table then insert several select statements

This exercise is provided to allow potential course delegates to choose the correct Wise Owl Microsoft training course, and may not be reproduced in whole or in part in any format without the prior written consent of Wise Owl.

Software ==> SQL  (198 exercises)
Version ==> Any version of SQL Server
Topic ==> Creating tables  (5 exercises)
Level ==> Average difficulty
Subject ==> SQL training
Before you can do this exercise, you'll need to download and unzip this file (if you have any problems doing this, click here for help). Once you've done this:
  1. Go into SQL Server Management Studio;
  2. Open the SQL file you've just unzipped (you can press CTRL + O to do this); then
  3. Execute this script.

This will generate the database that you'll need to use in order to do this exercise (note that the database and script are only to be used for exercises published on this website, and may not be reused or distributed in any form without the prior written permission of Wise Owl).

You need a minimum screen resolution of about 700 pixels width to see our exercises. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.

The aim of this exercise is to explicitly create a table, then insert the output from several select statements into it. The final table should list out the count of events for each country, continent and two millennia.

Table something something darkeside

The last millennium is here defined as containing any event before '2000-01-01'.


Start by using CREATE to construct the table with two columns (one to hold the name of the the category and the other to hold the COUNT of films):

Newly created table

Feel free to use more imaginative column names.


Now use INSERT INTO above SELECT to put data for the last millenium into the newly created table.

Repeat this for each row of data to separately add a statistic for:

  1. The current millennium;
  2. Each continent (using grouping);
  3. Each country (using grouping).

Unless using a UNION there will need to use a separate INSERT for each select.  Remember if using UNION there needs to be the same number of columns in each SELECT statement.

Optionally save this as Going Places.sql and then close it down.

This page has 1 thread Add post
05 Jun 20 at 00:01

Can someone upload the solution please? :(

22 Oct 20 at 15:17

Hi, I'm using this opportunity to submit my answer to this exercise. As said, consider this to be hint when you run out of solutions, as there is no file from Wise Owl. I'm still in the learning process of SQL, but I think it's good to have at least an answer to help someone who would have trouble doing the exercise while traiing honestly. I do not pretend this to be perfect or fully efficient though, but at least I think it does put you in right direction. 

-- In case it is necessary to redirect the database link

USE WorldEvents

-- Useful if you want to run the query at will with the same script

    DROP TABLE Summary_Data

-- varchar(250) may be overkill, I put NOT NULL by habit, not forcibly necessary here

CREATE TABLE Summary_Data (SummaryItems varchar (250) NOT NULL, CountEvents smallint NOT NULL)

INSERT INTO Summary_Data (SummaryItems, CountEvents)
VALUES ('Last Millenium',(SELECT COUNT(*) FROM tblEvent WHERE YEAR(EventDate)<2000))

INSERT INTO Summary_Data (SummaryItems, CountEvents)
VALUES ('New Millenium',(SELECT COUNT(*)FROM tblEvent WHERE YEAR(EventDate)>1999))

INSERT INTO Summary_Data (SummaryItems, CountEvents)
    co.ContinentName , COUNT(DISTINCT(e.EventID))
    FROM tblEvent  AS e
    INNER JOIN tblCountry as cn ON e.CountryID = cn.CountryID
    INNER JOIN tblContinent AS co ON  cn.ContinentID = co.ContinentID
    GROUP BY co.ContinentName

INSERT INTO Summary_Data (SummaryItems, CountEvents)
    cn.CountryName , COUNT(DISTINCT(e.EventID))
    FROM tblEvent  AS e
    INNER JOIN tblCountry as cn ON e.CountryID = cn.CountryID
    GROUP BY cn.CountryName

SELECT * FROM Summary_Data

Good luck

Rachel Owl   Reply to Rachel OwlReply
08 Jun 20 at 09:07

Sorry, we seem to have mislaid the solution to this one.  It does give more of an incentive to solve the exercise though ...