Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Attempt#1 #49

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions solutions.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
-- Challenge 1: List authors, their books, and publishers
SELECT
a.au_id AS author_id,
a.au_lname AS last_name,
a.au_fname AS first_name,
t.title,
p.pub_name AS publisher
FROM authors a
JOIN titleauthor ta ON a.au_id = ta.au_id
JOIN titles t ON ta.title_id = t.title_id
JOIN publishers p ON t.pub_id = p.pub_id;


-- Challenge 2: Count of books per author per publisher
SELECT
a.au_id AS author_id,
a.au_lname AS last_name,
a.au_fname AS first_name,
p.pub_name AS publisher,
COUNT(t.title_id) AS TITLE_COUNT
FROM authors a
JOIN titleauthor ta ON a.au_id = ta.au_id
JOIN titles t ON ta.title_id = t.title_id
JOIN publishers p ON t.pub_id = p.pub_id
GROUP BY a.au_id, p.pub_name
ORDER BY TITLE_COUNT DESC;

-- Validate total book count
SELECT SUM(book_count) FROM (
SELECT a.au_id, p.pub_name, COUNT(t.title_id) AS book_count
FROM authors a
JOIN titleauthor ta ON a.au_id = ta.au_id
JOIN titles t ON ta.title_id = t.title_id
JOIN publishers p ON t.pub_id = p.pub_id
GROUP BY a.au_id, p.pub_name
) AS book_summary;

-- Check if sum matches total entries in titleauthor
SELECT COUNT(*) FROM titleauthor;

-- Challenge 3: Top 3 authors by sales
SELECT
a.au_id AS author_id,
a.au_lname AS last_name,
a.au_fname AS first_name,
SUM(s.qty) AS total_sales
FROM authors a
JOIN titleauthor ta ON a.au_id = ta.au_id
JOIN titles t ON ta.title_id = t.title_id
JOIN sales s ON t.title_id = s.title_id
GROUP BY a.au_id
ORDER BY total_sales DESC
LIMIT 3;

-- Challenge 4: Total sales per author, including those with no sales
SELECT
a.au_id AS author_id,
a.au_lname AS last_name,
a.au_fname AS first_name,
COALESCE(SUM(s.qty), 0) AS total_sales
FROM authors a
LEFT JOIN titleauthor ta ON a.au_id = ta.au_id
LEFT JOIN titles t ON ta.title_id = t.title_id
LEFT JOIN sales s ON t.title_id = s.title_id
GROUP BY a.au_id
ORDER BY total_sales DESC;