- 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 | Aggregation and grouping exercise | Show the number of episodes written by each author
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!
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.
If you haven't already done so, run the script in the above folder to generate the Doctor Who database.
The following diagram shows how the authors and episodes tables are related:
You're probably familiar with this by now!
Use this to show for each author:
- the number of episodes they wrote;
- their earliest episode date; and
- their latest episode date.
If you sort these so that the most prolific authors come first, here are the first few of the 25 rows you should see:
Those who know their Doctor Who won't be surprised at the two leaders.
Save this query as Blink was the best, then close it down.
SELECT [AuthorName], COUNT([EpisodeId]) AS [# OF EPISODES],
MIN([EpisodeDate]) AS [Earliest epi Date],
max([EpisodeDate]) as [latest epi Date]
FROM [dbo].[tblAuthor] AS A INNER JOIN [dbo].[tblEpisode] AS E
ON A.AuthorId = E.AuthorId
GROUP BY [AuthorName]
order by [# OF EPISODES] desc;
select AuthorName, count(EpisodeNumber), EpisodeDate as [Earliest date], EpisodeDate as [Latest date] from
tblAuthor INNER JOIN tblEpisode ON tblAuthor.AuthorId=tblEpisode.AuthorId
group by AuthorName, EpisodeDate
order by [Earliest date] asc, [Latest date] desc
What is the problem with my code?