Skip to content

Commit e9f01c6

Browse files
committed
At the library project completed
1 parent 101f4f6 commit e9f01c6

File tree

5 files changed

+301
-1
lines changed

5 files changed

+301
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
/******************* In the Library *********************/
2+
3+
/*******************************************************/
4+
/* find the number of availalbe copies of Dracula */
5+
/*******************************************************/
6+
7+
/* check total copies of the book */
8+
SELECT *, COUNT(BookID) AS TotalCopies
9+
FROM Books
10+
WHERE Title LIKE '%Dracula%';
11+
12+
/* current total loans of the book */
13+
SELECT *, COUNT(LoanID) AS TotalLoans
14+
FROM Loans
15+
WHERE BookID IN (
16+
SELECT BookID FROM Books WHERE Title LIKE '%Dracula%'
17+
)
18+
AND ReturnedDate IS NULL;
19+
20+
/* total available book */
21+
22+
SELECT
23+
(SELECT COUNT(BookID) AS TotalCopies
24+
FROM Books
25+
WHERE Title LIKE '%Dracula%')
26+
-
27+
(SELECT COUNT(LoanID) AS TotalLoans
28+
FROM Loans
29+
WHERE BookID IN (
30+
SELECT BookID FROM Books WHERE Title LIKE '%Dracula%'
31+
)
32+
AND ReturnedDate IS NULL)
33+
AS AvailableBooks;
34+
35+
36+
/*******************************************************/
37+
/* Add new books to the library */
38+
/*******************************************************/
39+
40+
INSERT INTO Books(Title, Author, Published, Barcode)
41+
VALUES
42+
('Dracula', 'Bram Stoker', 1897, 4819277482),
43+
('Gulliver''s Travel', 'Johnathan Swift',1729,4899254401);
44+
45+
46+
/*******************************************************/
47+
/* Check out Books */
48+
/*******************************************************/
49+
50+
INSERT INTO Loans(BookID, PatronID, LoanDate, DueDate)
51+
VALUES
52+
(
53+
(SELECT BookID FROM Books WHERE Barcode = 4043822646),
54+
(SELECT PatronID FROM Patrons WHERE Email LIKE '[email protected]'),
55+
'2020-08-25',
56+
'2020-09-08'
57+
),
58+
(
59+
(SELECT BookID FROM Books WHERE Barcode = 2855934983),
60+
(SELECT PatronID FROM Patrons WHERE Email LIKE '[email protected]'),
61+
'2020-08-25',
62+
'2020-09-08'
63+
);
64+
65+
SELECT * FROM Loans
66+
ORDER BY LoanID DESC
67+
LIMIT 5;
68+
69+
70+
/********************************************************/
71+
/* Check books for Due back */
72+
/* generate a report of books due back on July 13, 2020 */
73+
/* with patron contact information */
74+
/********************************************************/
75+
76+
SELECT p.FirstName, p.LastName, p.Email, b.Title, l.LoanDate, l.DueDate
77+
FROM Loans l
78+
JOIN Books b ON l.BookID = b.BookID
79+
JOIN Patrons p ON l.PatronID = p.PatronID
80+
WHERE l.DueDate = '2020-07-13'
81+
AND ReturnedDate IS NULL;
82+
83+
84+
/*******************************************************/
85+
/* Return books to the library */
86+
/*******************************************************/
87+
SELECT * FROM Loans
88+
WHERE BookID IN (SELECT BookID FROM Books
89+
WHERE Barcode = 6435968624)
90+
AND ReturnedDate IS NULL;
91+
92+
UPDATE Loans
93+
SET ReturnedDate = '2020-07-05'
94+
WHERE BookID IN
95+
(SELECT BookID FROM Books WHERE Barcode = 6435968624)
96+
AND ReturnedDate IS NULL;
97+
98+
99+
/*******************************************************/
100+
/* Encourage Patrons to check out books */
101+
/* generate a report of showing 10 patrons who have
102+
checked out the fewest books. */
103+
/*******************************************************/
104+
SELECT p.FirstName, p.LastName, p.Email, COUNT(p.PatronID) AS Total_Loans
105+
FROM Patrons p
106+
LEFT JOIN Loans l
107+
ON p.PatronID = l.PatronID
108+
GROUP BY p.PatronID
109+
ORDER BY 4 ASC
110+
LIMIT 10;
111+
112+
113+
/*******************************************************/
114+
/* Find books to feature for an event
115+
create a list of books from 1890s that are
116+
currently available */
117+
/*******************************************************/
118+
SELECT b.BookID, b.Title, b.Author, b.Published, COUNT(b.BookID) AS TotalAvailableBooks
119+
FROM Books b
120+
LEFT JOIN Loans l
121+
ON b.BookID = l.BookID
122+
WHERE ReturnedDate IS NOT NULL
123+
AND b.Published BETWEEN 1890 AND 1899
124+
GROUP BY b.BookID
125+
ORDER BY b.BookID;
126+
127+
128+
/*******************************************************/
129+
/* Book Statistics
130+
/* create a report to show how many books were
131+
published each year. */
132+
/*******************************************************/
133+
SELECT Published, COUNT(DISTINCT(Title)) AS TotalNumberOfPublishedBooks
134+
FROM Books
135+
GROUP BY Published
136+
ORDER BY TotalNumberOfPublishedBooks DESC;
137+
138+
139+
/*************************************************************/
140+
/* Book Statistics */
141+
/* create a report to show 5 most popular Books to check out */
142+
/*************************************************************/
143+
SELECT b.Title, b.Author, b.Published, COUNT(b.Title) AS TotalTimesOfLoans
144+
FROM Books b
145+
JOIN Loans l
146+
ON b.BookID = l.BookID
147+
GROUP BY b.Title
148+
ORDER BY 4 DESC
149+
LIMIT 5;
228 KB
Binary file not shown.

Diff for: SQL Code Challenges - Lynda/At the Library/library.sqbpro

+150
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
<?xml version="1.0" encoding="UTF-8"?><sqlb_project><db path="C:/Users/Phone Thiri Yadana/Documents/02.Studies/SQL/exercises/MySQL Projects/SQL Code Challenges - Lynda/At the Library/library.db" readonly="0" foreign_keys="1" case_sensitive_like="0" temp_store="0" wal_autocheckpoint="1000" synchronous="2"/><attached/><window><main_tabs open="structure browser pragmas query" current="0"/></window><tab_structure><column_width id="0" width="300"/><column_width id="1" width="0"/><column_width id="2" width="100"/><column_width id="3" width="938"/><column_width id="4" width="0"/><expanded_item id="0" parent="1"/><expanded_item id="1" parent="1"/><expanded_item id="2" parent="1"/><expanded_item id="3" parent="1"/></tab_structure><tab_browse><current_table name="4,5:mainBooks"/><default_encoding codec=""/><browse_table_settings><table schema="main" name="Books" show_row_id="0" encoding="" plot_x_axis="" unlock_view_pk="_rowid_"><sort><column index="1" mode="1"/></sort><column_widths><column index="1" value="53"/><column index="2" value="300"/><column index="3" value="198"/><column index="4" value="69"/><column index="5" value="77"/></column_widths><filter_values/><conditional_formats/><row_id_formats/><display_formats/><hidden_columns/><plot_y_axes/><global_filter/></table><table schema="main" name="Loans" show_row_id="0" encoding="" plot_x_axis="" unlock_view_pk="_rowid_"><sort><column index="1" mode="1"/></sort><column_widths><column index="1" value="53"/><column index="2" value="53"/><column index="3" value="66"/><column index="4" value="73"/><column index="5" value="73"/></column_widths><filter_values/><conditional_formats/><row_id_formats/><display_formats/><hidden_columns/><plot_y_axes/><global_filter/></table></browse_table_settings></tab_browse><tab_sql><sql name="LibraryChallenges.sql">/******************* In the Library *********************/
2+
3+
/*******************************************************/
4+
/* find the number of availalbe copies of Dracula */
5+
/*******************************************************/
6+
7+
/* check total copies of the book */
8+
SELECT *, COUNT(BookID) AS TotalCopies
9+
FROM Books
10+
WHERE Title LIKE '%Dracula%';
11+
12+
/* current total loans of the book */
13+
SELECT *, COUNT(LoanID) AS TotalLoans
14+
FROM Loans
15+
WHERE BookID IN (
16+
SELECT BookID FROM Books WHERE Title LIKE '%Dracula%'
17+
)
18+
AND ReturnedDate IS NULL;
19+
20+
/* total available book */
21+
22+
SELECT
23+
(SELECT COUNT(BookID) AS TotalCopies
24+
FROM Books
25+
WHERE Title LIKE '%Dracula%')
26+
-
27+
(SELECT COUNT(LoanID) AS TotalLoans
28+
FROM Loans
29+
WHERE BookID IN (
30+
SELECT BookID FROM Books WHERE Title LIKE '%Dracula%'
31+
)
32+
AND ReturnedDate IS NULL)
33+
AS AvailableBooks;
34+
35+
36+
/*******************************************************/
37+
/* Add new books to the library */
38+
/*******************************************************/
39+
40+
INSERT INTO Books(Title, Author, Published, Barcode)
41+
VALUES
42+
('Dracula', 'Bram Stoker', 1897, 4819277482),
43+
('Gulliver''s Travel', 'Johnathan Swift',1729,4899254401);
44+
45+
46+
/*******************************************************/
47+
/* Check out Books */
48+
/*******************************************************/
49+
50+
INSERT INTO Loans(BookID, PatronID, LoanDate, DueDate)
51+
VALUES
52+
(
53+
(SELECT BookID FROM Books WHERE Barcode = 4043822646),
54+
(SELECT PatronID FROM Patrons WHERE Email LIKE '[email protected]'),
55+
'2020-08-25',
56+
'2020-09-08'
57+
),
58+
(
59+
(SELECT BookID FROM Books WHERE Barcode = 2855934983),
60+
(SELECT PatronID FROM Patrons WHERE Email LIKE '[email protected]'),
61+
'2020-08-25',
62+
'2020-09-08'
63+
);
64+
65+
SELECT * FROM Loans
66+
ORDER BY LoanID DESC
67+
LIMIT 5;
68+
69+
70+
/********************************************************/
71+
/* Check books for Due back */
72+
/* generate a report of books due back on July 13, 2020 */
73+
/* with patron contact information */
74+
/********************************************************/
75+
76+
SELECT p.FirstName, p.LastName, p.Email, b.Title, l.LoanDate, l.DueDate
77+
FROM Loans l
78+
JOIN Books b ON l.BookID = b.BookID
79+
JOIN Patrons p ON l.PatronID = p.PatronID
80+
WHERE l.DueDate = '2020-07-13'
81+
AND ReturnedDate IS NULL;
82+
83+
84+
/*******************************************************/
85+
/* Return books to the library */
86+
/*******************************************************/
87+
SELECT * FROM Loans
88+
WHERE BookID IN (SELECT BookID FROM Books
89+
WHERE Barcode = 6435968624)
90+
AND ReturnedDate IS NULL;
91+
92+
UPDATE Loans
93+
SET ReturnedDate = '2020-07-05'
94+
WHERE BookID IN
95+
(SELECT BookID FROM Books WHERE Barcode = 6435968624)
96+
AND ReturnedDate IS NULL;
97+
98+
99+
/*******************************************************/
100+
/* Encourage Patrons to check out books */
101+
/* generate a report of showing 10 patrons who have
102+
checked out the fewest books. */
103+
/*******************************************************/
104+
SELECT p.FirstName, p.LastName, p.Email, COUNT(p.PatronID) AS Total_Loans
105+
FROM Patrons p
106+
LEFT JOIN Loans l
107+
ON p.PatronID = l.PatronID
108+
GROUP BY p.PatronID
109+
ORDER BY 4 ASC
110+
LIMIT 10;
111+
112+
113+
/*******************************************************/
114+
/* Find books to feature for an event
115+
create a list of books from 1890s that are
116+
currently available */
117+
/*******************************************************/
118+
SELECT b.BookID, b.Title, b.Author, b.Published, COUNT(b.BookID) AS TotalAvailableBooks
119+
FROM Books b
120+
LEFT JOIN Loans l
121+
ON b.BookID = l.BookID
122+
WHERE ReturnedDate IS NOT NULL
123+
AND b.Published BETWEEN 1890 AND 1899
124+
GROUP BY b.BookID
125+
ORDER BY b.BookID;
126+
127+
128+
/*******************************************************/
129+
/* Book Statistics
130+
/* create a report to show how many books were
131+
published each year. */
132+
/*******************************************************/
133+
SELECT Published, COUNT(DISTINCT(Title)) AS TotalNumberOfPublishedBooks
134+
FROM Books
135+
GROUP BY Published
136+
ORDER BY TotalNumberOfPublishedBooks DESC;
137+
138+
139+
/*************************************************************/
140+
/* Book Statistics */
141+
/* create a report to show 5 most popular Books to check out */
142+
/*************************************************************/
143+
SELECT b.Title, b.Author, b.Published, COUNT(b.Title) AS TotalTimesOfLoans
144+
FROM Books b
145+
JOIN Loans l
146+
ON b.BookID = l.BookID
147+
GROUP BY b.Title
148+
ORDER BY 4 DESC
149+
LIMIT 5;
150+
</sql><current_tab id="0"/></tab_sql></sqlb_project>
Binary file not shown.

Diff for: readme.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ Compilation of MySQL data analysis related projects, notes and challenges.
2525

2626
**SQL Code Challenges** : challenges are from Lynda course [SQL Code Challenges](https://www.lynda.com/SQL-tutorials/SQL-Code-Challenges/2825725-2.html) which has 2 projects:
2727
- **In the Restaurant** - helping the Restaurant to manage customer information, reservations, orders and party invities in for Restaurant 20th Anniversary.
28-
28+
- **At the Library** - helping the Library to manage the books statistics, check out and loan process, managing on due loans, encouraging patrons, etc.
29+
2930
**SQL 30 Questions**: challenges from Skillshare course [Skill Share - 30 Simple SQL Interview Queries](https://www.skillshare.com/classes/SQL-Interview-30-Simple-SQL-Interview-Queries-in-2019/809081836).
3031

3132
**SQL Queries - Practice your SQL Knowledge**: challenges from Skillshare course [SQL Queries: Practice your SQL Knowledge!](https://www.skillshare.com/classes/SQL-Queries-Practice-your-SQL-Knowledge/465058562).

0 commit comments

Comments
 (0)