From 706e232785ce76e1dbaf5736ec6c03bcbead127f Mon Sep 17 00:00:00 2001 From: Krishan Date: Thu, 27 Jan 2022 18:40:48 +0000 Subject: [PATCH] completed Question 1-9 completed --- 2-classes-db/task.md | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/2-classes-db/task.md b/2-classes-db/task.md index e8ddba62..e3cf08e7 100644 --- a/2-classes-db/task.md +++ b/2-classes-db/task.md @@ -20,27 +20,46 @@ To submit this homework write the correct commands after each question. ### 1. Show the date, transaction_no, description and amount for those transactions whose amount is between £30,000 and £31,000. ```sql - +SELECT date, transaction_no, description amount + FROM spends + WHERE amount > 30,000 AND < 31000; ``` ### 2. Show the date, transaction_no, supplier_inv_no, description and amount for those transactions whose description includes the word 'fee'. ```sql - +SELECT date transaction_no, supplier_inv_no, + description, amount +FROM + spends +WHERE + description LIKE '%fee%'; ``` ### 3. Show the date, transaction_no, supplier_inv_no, description and amount for those transactions whose description includes the word 'Fee'. ```sql - +SELECT date, transaction_no, supplier_inv_no, + description, amount +FROM + spends +WHERE + description LIKE '%Fee%'; ``` ### 4. Show the date, transaction_no, supplier_inv_no, description and amount for those transactions whose description includes the word 'fee' (case insensitive). You will need to search 'https://www.postgresql.org/docs/' to solve this. ```sql - + SELECT date, transaction_no, supplier_inv_no, description, amount + FROM spends + WHERE LOWER(description) LIKE LOWER('%Fee%'); ``` ### 5. Show the date, transaction_no, supplier_inv_no, description and amount for those transactions whose amount is £25,000, £30,000, £35,000 or £40,000. ```sql - +SELECT date, transaction_no, supplier_inv_no, description, amount + FROM spends + WHERE amount IN (25000, 30000, 35000, 40000); ``` ### 6. Show the date, the supplier_id, the description and the amount for transactions with the expense area of 'Better Hospital Food'. You could do a query to get the expense_area_id first then do a query to find the dates, supplier_ids and amounts. But it would be better to do this all in one query by linking the tables together using INNER JOINs. ```sql - +SELECT date, supplier_id, description, amount FROM spends +INNER JOIN expense_areas +ON expense_areas.id = spends.expense_area_id +WHERE expense_areas.expense_area = 'Better Hospital Food'; ``` ### 7. Show the date, supplier name, description and amount for transactions with the expense area of 'Better Hospital Food'. You will need to INNER JOIN another table to be able to do this. ```sql @@ -54,11 +73,14 @@ To submit this homework write the correct commands after each question. the expense type is 'Computer Hardware Purch' (id 7) the expense area is 'ICT Contingency' (id 18) ```sql - +INSERT INTO spends(date, description, transaction_no, supplier_inv_no, supplier_id, expense_type_id, expense_area_id, amount) + VALUES('2021-04-01','Computer Hardware Dell',38104091,'3780119655', 16, 7, 18, 777); ``` ### 9. If you examine the dates in the data, you will see they all are dated either 1st march 2021 or 1st April 2021. So if we group on the the date, there will only be two groups. Show the date and the total amount spent on that date for these two dates by using a GROUP BY clause. ```sql - +SELECT date, SUM(amount) AS total_amount + FROM spends + GROUP BY date; ``` ### 10. (optional) Great we now know the monthly spend. But it didn't look that good. So I've changed my SELECT query to output this instead: ```