EXERCISE TOPIC▼
SQL EXERCISES▼
SQL EXERCISES▼
- Simple Queries (4)
- Setting criteria using WHERE (5)
- Calculations (7)
- Calculations using dates (4)
- Basic joins (8)
- More exotic joins (2)
- Aggregation and grouping (8)
- Views (5)
- Subqueries (5)
- Stored procedures (5)
- Variables (8)
- Parameters and return values (11)
- Testing conditions (1)
- Looping (3)
- Scalar functions (6)
- Transactions (5)
- Creating tables (5)
- Temporary tables and table variables (9)
- Table-valued functions (6)
- Derived tables and CTEs (13)
- Dynamic SQL (4)
- Pivots (2)
- Triggers (2)
- Archived (70)
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.
You can learn how to do this exercise if you attend one of more of the courses listed below!
Software ==> | SQL (198 exercises) |
Version ==> | Any version of SQL Server |
Topic ==> | Creating tables (5 exercises) |
Level ==> | Average difficulty |
Courses ==> | Fast-track SQL / Advanced SQL |
- Go into SQL Server Management Studio;
- Open the SQL file you've just unzipped (you can press CTRL + O to do this); then
- 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.

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):

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:
- The current millennium;
- Each continent (using grouping);
- 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.
Can someone upload the solution please? :(
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
BEGIN TRY
DROP TABLE Summary_Data
END TRY
BEGIN CATCH
END CATCH
-- 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)
SELECT
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)
SELECT
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
Sorry, we seem to have mislaid the solution to this one. It does give more of an incentive to solve the exercise though ...