From 53bfa38e953c18fb927e08cf46ab9ee67a83462a Mon Sep 17 00:00:00 2001 From: Ali Haider Date: Tue, 17 Oct 2023 14:37:44 +0000 Subject: [PATCH 1/7] adding local sql file --- Scripts/ali-haider-01.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 Scripts/ali-haider-01.sql diff --git a/Scripts/ali-haider-01.sql b/Scripts/ali-haider-01.sql new file mode 100644 index 0000000..c14836b --- /dev/null +++ b/Scripts/ali-haider-01.sql @@ -0,0 +1 @@ +SELECT * FROM employee LIMIT 10; \ No newline at end of file From a0f46acc1e1778e3911c1e1faef12fa2f92ad2d4 Mon Sep 17 00:00:00 2001 From: Ali Haider Date: Tue, 17 Oct 2023 15:50:43 +0000 Subject: [PATCH 2/7] first part done --- Scripts/ali-haider-01.sql | 13 ++++++++++++- Scripts/p01.sql | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 Scripts/p01.sql diff --git a/Scripts/ali-haider-01.sql b/Scripts/ali-haider-01.sql index c14836b..1dd5810 100644 --- a/Scripts/ali-haider-01.sql +++ b/Scripts/ali-haider-01.sql @@ -1 +1,12 @@ -SELECT * FROM employee LIMIT 10; \ No newline at end of file +select sql FROM sqlite_schema where name = "employee"; + +select * from model m order by m.modelId desc LIMIT 10; + +SELECT * FROM employee e LIMIT 10; +SELECT count(e.employeeId) FROM employee e; + +SELECT * FROM employee e LIMIT 10; +SELECT * FROM sales s LIMIT 10; +SELECT * FROM customer c LIMIT 10; +SELECT * FROM model m LIMIT 10; +SELECT * FROM inventory i LIMIT 10; diff --git a/Scripts/p01.sql b/Scripts/p01.sql new file mode 100644 index 0000000..00b41b8 --- /dev/null +++ b/Scripts/p01.sql @@ -0,0 +1,4 @@ +select e.firstName, e.lastName, e.title, m.firstName as 'Manager First Name', m.lastName as 'Manager Last Name' +from employee e +INNER JOIN employee m +ON e.managerId = m.employeeId; \ No newline at end of file From fb7d5c5610117be82732d95a6d1c967812f84a23 Mon Sep 17 00:00:00 2001 From: Ali Haider Date: Thu, 19 Oct 2023 17:40:47 +0000 Subject: [PATCH 3/7] adding new files for joins --- Scripts/p01-joins.sql | 7 +++++++ Scripts/p02-joins.sql | 9 +++++++++ Scripts/p03-joins.sql | 16 ++++++++++++++++ Scripts/p2.1-grouping.sql | 0 4 files changed, 32 insertions(+) create mode 100644 Scripts/p01-joins.sql create mode 100644 Scripts/p02-joins.sql create mode 100644 Scripts/p03-joins.sql create mode 100644 Scripts/p2.1-grouping.sql diff --git a/Scripts/p01-joins.sql b/Scripts/p01-joins.sql new file mode 100644 index 0000000..f41fa86 --- /dev/null +++ b/Scripts/p01-joins.sql @@ -0,0 +1,7 @@ +select e.firstName, e.lastName, e.title, m.firstName as 'Manager First Name', +m.lastName as 'Manager Last Name' +FROM employee e +INNER JOIN employee m +ON e.managerId = m.employeeId; + +SELECT * FROM employee; \ No newline at end of file diff --git a/Scripts/p02-joins.sql b/Scripts/p02-joins.sql new file mode 100644 index 0000000..eadfebc --- /dev/null +++ b/Scripts/p02-joins.sql @@ -0,0 +1,9 @@ +select * from sales limit 10; + +select e.firstName, e.lastName, count(s.salesId) as 'totalSales' +from employee e +LEFT JOIN sales s ON s.employeeId = e.employeeId +where e.title = 'Sales Person' +group BY e.employeeId +having totalSales = 0 +order by totalSales DESC; \ No newline at end of file diff --git a/Scripts/p03-joins.sql b/Scripts/p03-joins.sql new file mode 100644 index 0000000..4dd52cd --- /dev/null +++ b/Scripts/p03-joins.sql @@ -0,0 +1,16 @@ +select * from customer; +select * from sales limit 10; + +SELECT c.firstName, c.lastName, c.email, s.salesAmount, s.soldDate +FROM customer c +INNER JOIN sales s ON s.customerId = c.customerId +UNION +SELECT c.firstName, c.lastName, c.email, s.salesAmount, s.soldDate +FROM customer c +LEFT JOIN sales s ON s.customerId = c.customerId +WHERE s.salesId is null +UNION +SELECT c.firstName, c.lastName, c.email, s.salesAmount, s.soldDate +FROM sales s +LEFT JOIN customer c ON s.customerId = c.customerId +WHERE c.customerId is null; diff --git a/Scripts/p2.1-grouping.sql b/Scripts/p2.1-grouping.sql new file mode 100644 index 0000000..e69de29 From ad4c8d0ffde850b6b9b9fb375d152a6cbbf8281b Mon Sep 17 00:00:00 2001 From: Ali Haider Date: Thu, 19 Oct 2023 17:56:33 +0000 Subject: [PATCH 4/7] adding new grouping files --- Scripts/{p01.sql => p00-start.sql} | 0 Scripts/{p2.1-grouping.sql => p04-grouping.sql} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Scripts/{p01.sql => p00-start.sql} (100%) rename Scripts/{p2.1-grouping.sql => p04-grouping.sql} (100%) diff --git a/Scripts/p01.sql b/Scripts/p00-start.sql similarity index 100% rename from Scripts/p01.sql rename to Scripts/p00-start.sql diff --git a/Scripts/p2.1-grouping.sql b/Scripts/p04-grouping.sql similarity index 100% rename from Scripts/p2.1-grouping.sql rename to Scripts/p04-grouping.sql From 32da97dc3043bd455dce769b1b62883e5578e58f Mon Sep 17 00:00:00 2001 From: Ali Haider Date: Thu, 19 Oct 2023 18:29:22 +0000 Subject: [PATCH 5/7] completed part 2 --- Scripts/p04-grouping.sql | 5 +++++ Scripts/p05-grouping.sql | 18 ++++++++++++++++++ Scripts/p06-grouping.sql | 6 ++++++ 3 files changed, 29 insertions(+) create mode 100644 Scripts/p05-grouping.sql create mode 100644 Scripts/p06-grouping.sql diff --git a/Scripts/p04-grouping.sql b/Scripts/p04-grouping.sql index e69de29..f6ad413 100644 --- a/Scripts/p04-grouping.sql +++ b/Scripts/p04-grouping.sql @@ -0,0 +1,5 @@ +select e.employeeId, e.firstName, e.lastName, count(s.salesId) as 'totalSales' +from sales s +INNER join employee e on e.employeeId = s.employeeId +group by s.employeeId, e.firstName, e.lastName +order by totalSales desc; \ No newline at end of file diff --git a/Scripts/p05-grouping.sql b/Scripts/p05-grouping.sql new file mode 100644 index 0000000..4ba2587 --- /dev/null +++ b/Scripts/p05-grouping.sql @@ -0,0 +1,18 @@ + + select s.employeeId, e.firstName, e.lastName, MAX(s.salesAmount) as 'saleAmount' + from sales s + inner join employee e on e.employeeId = s.employeeId + group by s.employeeId + UNION + select s.employeeId, e.firstName, e.lastName, MIN(s.salesAmount) as 'saleAmount' + from sales s + inner join employee e on e.employeeId = s.employeeId + group by s.employeeId + order by saleAmount desc; + + select s.employeeId, e.firstName, e.lastName, + MAX(s.salesAmount) as 'highestSale', MIN(s.salesAmount) as 'lowestAmount' + from sales s + inner join employee e on e.employeeId = s.employeeId + where s.soldDate >= date('now', 'start of year') + group by s.employeeId; \ No newline at end of file diff --git a/Scripts/p06-grouping.sql b/Scripts/p06-grouping.sql new file mode 100644 index 0000000..88748c1 --- /dev/null +++ b/Scripts/p06-grouping.sql @@ -0,0 +1,6 @@ +select e.employeeId, e.firstName, e.lastName, count(s.salesId) as 'totalSales' +from employee e +INNER JOIN sales s ON e.employeeId = s.salesId +GROUP by s.employeeId +having totalSales >= 5 +order by totalSales desc; \ No newline at end of file From ee1cded41ce31039433bb9b9a24c0e077e2498fc Mon Sep 17 00:00:00 2001 From: Ali Haider Date: Sun, 22 Oct 2023 15:30:37 +0000 Subject: [PATCH 6/7] finishing final part --- Scripts/p07-advanced.sql | 8 ++++++++ Scripts/p08-advanced.sql | 13 +++++++++++++ Scripts/p09-windows function.sql | 8 ++++++++ Scripts/p10-windows function.sql | 12 ++++++++++++ Scripts/p11-windows function.sql | 1 + 5 files changed, 42 insertions(+) create mode 100644 Scripts/p07-advanced.sql create mode 100644 Scripts/p08-advanced.sql create mode 100644 Scripts/p09-windows function.sql create mode 100644 Scripts/p10-windows function.sql create mode 100644 Scripts/p11-windows function.sql diff --git a/Scripts/p07-advanced.sql b/Scripts/p07-advanced.sql new file mode 100644 index 0000000..113910a --- /dev/null +++ b/Scripts/p07-advanced.sql @@ -0,0 +1,8 @@ +select * from sales s limit 10; + +WITH cte AS ( + SELECT strftime('%Y', s.soldDate) AS 'soldYear', s.salesAmount FROM sales s) +SELECT soldYear, FORMAT("$%.2f", SUM(salesAmount)) as 'AnnualSale' +FROM cte +GROUP BY soldYear +ORDER BY soldYear; \ No newline at end of file diff --git a/Scripts/p08-advanced.sql b/Scripts/p08-advanced.sql new file mode 100644 index 0000000..646c9dd --- /dev/null +++ b/Scripts/p08-advanced.sql @@ -0,0 +1,13 @@ +select * from sales s limit 10; + + +WITH cte AS ( +SELECT s.salesId, s.employeeId, s.soldDate, strftime('%m', s.soldDate) as 'sellingMonth' +from sales s +WHERE s.soldDate BETWEEN date('2021-01-01') and date('2021-12-31')) +SELECT c.employeeId, e.firstName, e.lastName, c.sellingMonth, count(c.salesId) as 'totalSales21' +from cte c +INNER JOIN employee e on e.employeeId = c.employeeId +GROUP BY c.employeeId +ORDER by sellingMonth asc, totalSales21 desc +; \ No newline at end of file diff --git a/Scripts/p09-windows function.sql b/Scripts/p09-windows function.sql new file mode 100644 index 0000000..62fcbba --- /dev/null +++ b/Scripts/p09-windows function.sql @@ -0,0 +1,8 @@ +select e.firstName, e.lastName, e.title, s.salesAmount, m.model, + count(m.model) AS 'totalSold', + rank() OVER (PARTITION BY s.employeeId ORDER BY count(m.model) DESC) AS rank + from employee e + INNER JOIN sales s ON s.employeeId = e.employeeId + INNER JOIN inventory i ON i.inventoryId = s.inventoryId + INNER JOIN model m ON m.modelId = i.modelId + GROUP BY e.firstName, e.lastName, m.model; \ No newline at end of file diff --git a/Scripts/p10-windows function.sql b/Scripts/p10-windows function.sql new file mode 100644 index 0000000..d15089e --- /dev/null +++ b/Scripts/p10-windows function.sql @@ -0,0 +1,12 @@ +WITH CTE AS (select strftime('%Y', s.soldDate) AS soldYear, + strftime('%m', s.soldDate) AS soldMonth, SUM(s.salesAmount) as totalSales + from sales s + GROUP BY soldYear, soldMonth + ORDER BY soldYear, soldMonth) + + SELECT soldYear, soldMonth, totalSales, + SUM(totalSales) + OVER (PARTITION BY soldYear ORDER BY soldYear, soldMonth) + as annualSales + from CTE + ; diff --git a/Scripts/p11-windows function.sql b/Scripts/p11-windows function.sql new file mode 100644 index 0000000..be27879 --- /dev/null +++ b/Scripts/p11-windows function.sql @@ -0,0 +1 @@ +select strftime('%Y', s.soldDate) from sales s; \ No newline at end of file From 6049e76559efa979aa690c59247dd0eefade1cc1 Mon Sep 17 00:00:00 2001 From: Ali Haider Date: Sun, 22 Oct 2023 16:08:26 +0000 Subject: [PATCH 7/7] course completed successfully --- Scripts/p11-windows function.sql | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Scripts/p11-windows function.sql b/Scripts/p11-windows function.sql index be27879..60d7f14 100644 --- a/Scripts/p11-windows function.sql +++ b/Scripts/p11-windows function.sql @@ -1 +1,6 @@ -select strftime('%Y', s.soldDate) from sales s; \ No newline at end of file +select strftime('%Y-%m', s.soldDate) as soldMonth, + COUNT(s.salesId) as carsSold, + LAG (count(s.salesId), 1, 0) OVER calMonth as carsSoldLastMonth + from sales s + GROUP BY soldMonth + WINDOW calMonth AS (ORDER BY strftime('%Y-%m', s.soldDate)); \ No newline at end of file