From f78ca3f8e96c03f74ad2ee474521149a37986a79 Mon Sep 17 00:00:00 2001 From: y2-youssef <youssef2.youssef@live.uwe.ac.uk> Date: Tue, 1 Apr 2025 03:09:41 +0000 Subject: [PATCH] Update 15 files - /Task 1/adress_import.sql - /Task 1/ER.mwb - /Task 1/ER.mwb.bak - /Task 1/favourite_import.sql - /Task 1/initial_setup.sql - /Task 1/neighbour2_import.sql - /Task 1/neighbour_import.sql - /Task 1/person_import.sql - /Task 1/Table_setup.sql - /Task 2/insert_data.py - /Task 2/queries.py - /Task 2/setup.py - /Assessment2425DataCaseScenario.csv - /Assessment2425DataCaseScenario.xlsx - /__pycache__/setup.cpython-313.pyc --- Assessment2425DataCaseScenario.csv | 21 ++++++++++ Assessment2425DataCaseScenario.xlsx | Bin 0 -> 14860 bytes Task 1/ER.mwb | Bin 0 -> 10125 bytes Task 1/ER.mwb.bak | Bin 0 -> 8931 bytes Task 1/Table_setup.sql | 33 +++++++++++++++ Task 1/adress_import.sql | 12 ++++++ Task 1/favourite_import.sql | 11 +++++ Task 1/initial_setup.sql | 2 + Task 1/neighbour2_import.sql | 11 +++++ Task 1/neighbour_import.sql | 10 +++++ Task 1/person_import.sql | 9 ++++ Task 2/insert_data.py | 39 ++++++++++++++++++ Task 2/queries.py | 61 ++++++++++++++++++++++++++++ Task 2/setup.py | 10 +++++ __pycache__/setup.cpython-313.pyc | Bin 0 -> 391 bytes 15 files changed, 219 insertions(+) create mode 100644 Assessment2425DataCaseScenario.csv create mode 100644 Assessment2425DataCaseScenario.xlsx create mode 100644 Task 1/ER.mwb create mode 100644 Task 1/ER.mwb.bak create mode 100644 Task 1/Table_setup.sql create mode 100644 Task 1/adress_import.sql create mode 100644 Task 1/favourite_import.sql create mode 100644 Task 1/initial_setup.sql create mode 100644 Task 1/neighbour2_import.sql create mode 100644 Task 1/neighbour_import.sql create mode 100644 Task 1/person_import.sql create mode 100644 Task 2/insert_data.py create mode 100644 Task 2/queries.py create mode 100644 Task 2/setup.py create mode 100644 __pycache__/setup.cpython-313.pyc diff --git a/Assessment2425DataCaseScenario.csv b/Assessment2425DataCaseScenario.csv new file mode 100644 index 0000000..7e07be2 --- /dev/null +++ b/Assessment2425DataCaseScenario.csv @@ -0,0 +1,21 @@ +Name,Email,DOB,Street,City,Country,Zip Code,Favorite Book,Favorite Drink,Favorite Activity,Neighbour 1,Neighbour1Email,Neighbour 2,Neighbour2Email +Person 1,person1@email.com,3/15/1995,12 Maple St,London,England,E1 6AN,A New Beginning,Lemonade,Outdoor Running,Neighbor A,neighborA@email.com,Neighbor B,neighborB@email.com +Person 2,person2@email.com,6/22/1993,45 Oak Ave,Manchester,England,M1 2WD,The Road to Success,Coffee,Hiking,Neighbor C,neighborC@email.com,Neighbor D,neighborD@email.com +Person 3,person3@email.com,9/10/1991,89 Pine Rd,Birmingham,England,B1 1AB,Endless Possibilities,Smoothie,Swimming,Neighbor E,neighborE@email.com,Neighbor F,neighborF@email.com +Person 4,person4@email.com,12/5/1998,23 Birch St,Edinburgh,Scotland,EH1 1YZ,Journey of Life,Iced Tea,Traveling,Neighbor G,neighborG@email.com,Neighbor H,neighborH@email.com +Person 5,person5@email.com,11/30/1983,67 Cedar Ln,Bristol,England,BS1 3XE,The Adventure Continues,Green Tea,Gardening,Neighbor I,neighborI@email.com,Neighbor J,neighborJ@email.com +Person 6,person6@email.com,7/18/1989,56 Elm St,Liverpool,England,L1 1AA,Finding Inner Peace,Coconut Water,Reading,Neighbor K,neighborK@email.com,Neighbor L,neighborL@email.com +Person 7,person7@email.com,4/25/1996,12 Maple St,Glasgow,Scotland,G1 2TF,Exploring New Horizons,Fruit Juice,Cycling,Neighbor M,neighborM@email.com,Neighbor N,neighborN@email.com +Person 8,person8@email.com,1/9/1990,89 Oak Dr,Leeds,England,LS1 3AB,The Great Journey,Water,Hiking,Neighbor O,neighborO@email.com,Neighbor P,neighborP@email.com +Person 9,person9@email.com,8/17/1993,123 Pine Rd,Newcastle,England,NE1 2AB,The Power of Change,Hot Chocolate,Skiing,Neighbor Q,neighborQ@email.com,Neighbor R,neighborR@email.com +Person 10,person10@email.com,10/22/1997,15 Elm St,Cardiff,Wales,CF10 3AF,New Beginnings Await,Fruit Smoothie,Jogging,Neighbor S,neighborS@email.com,Neighbor T,neighborT@email.com +Person 11,person11@email.com,5/13/1992,78 Oak Ln,Sheffield,England,S1 4GT,Wandering Souls,Sparkling Water,Rock Climbing,Neighbor U,neighborU@email.com,Neighbor V,neighborV@email.com +Person 12,person12@email.com,2/27/1986,56 Birch Rd,Nottingham,England,NG1 2PB,Freedom and Choice,Herbal Tea,Yoga,Neighbor W,neighborW@email.com,Neighbor X,neighborX@email.com +Person 13,person13@email.com,11/25/1991,10 Holy St,Cardiff,Wales,CF10 2NF,New Beginnings Await,Smoothie,Hiking,Neighbor Y,neighborY@email.com,Neighbor Z,neighborZ@email.com +Person 14,person14@email.com,2/1/1987,34 Willow Rd,Edinburgh,Scotland,EH1 1AB,Chasing Dreams,Lemonade,Running,Neighbor AA,neighborAA@email.com,Neighbor AB,neighborAB@email.com +Person 15,person15@email.com,8/12/1984,78 Cedar Ave,Cambridge,England,CB1 2SE,The Endless Journey,Iced Coffee,Cycling,Neighbor AC,neighborAC@email.com,Neighbor AD,neighborAD@email.com +Person 16,person16@email.com,3/9/1990,45 Maple Rd,Oxford,England,OX2 6TP,The Future Ahead,Fruit Juice,Yoga,Neighbor AE,neighborAE@email.com,Neighbor AF,neighborAF@email.com +Person 17,person17@email.com,11/17/1995,23 Birch Ave,Southampton,England,SO14 3HL,The Path to Glory,Green Tea,Gardening,Neighbor AG,neighborAG@email.com,Neighbor AH,neighborAH@email.com +Person 18,person18@email.com,6/20/1994,12 Elm Blvd,Leicester,England,LE1 3PL,Life�s Adventure,Coconut Water,Hiking,Neighbor AI,neighborAI@email.com,Neighbor AJ,neighborAJ@email.com +Person 19,person19@email.com,12/11/1992,56 Oak Rd,Norwich,England,NR1 4BE,Into the Wild,Herbal Tea,Swimming,Neighbor AK,neighborAK@email.com,Neighbor AL,neighborAL@email.com +Person 20,person20@email.com,9/25/1988,89 Pine Ave,Cardiff,Wales,CF10 3BC,The Adventure Continues,Water,Hiking,Neighbor AM,neighborAM@email.com,Neighbor AN,neighborAN@email.com diff --git a/Assessment2425DataCaseScenario.xlsx b/Assessment2425DataCaseScenario.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3d4158b5d78aa101245c944834bc0fd1132e611a GIT binary patch literal 14860 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 OK8E$o3=HmOARYh$8$<&D literal 0 HcmV?d00001 diff --git a/Task 1/ER.mwb b/Task 1/ER.mwb new file mode 100644 index 0000000000000000000000000000000000000000..72a8a3a7fe415c375229f14ce7e01d26ba96df4f GIT binary patch literal 10125 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 literal 0 HcmV?d00001 diff --git a/Task 1/ER.mwb.bak b/Task 1/ER.mwb.bak new file mode 100644 index 0000000000000000000000000000000000000000..81353d4453ec6055f747deadfbea904d370b113d GIT binary patch literal 8931 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 literal 0 HcmV?d00001 diff --git a/Task 1/Table_setup.sql b/Task 1/Table_setup.sql new file mode 100644 index 0000000..ce9c9f0 --- /dev/null +++ b/Task 1/Table_setup.sql @@ -0,0 +1,33 @@ +CREATE TABLE person ( + PersonID INT PRIMARY KEY, + Name VARCHAR(255) NOT NULL, + Email VARCHAR(255) UNIQUE NOT NULL, + DOB DATE NOT NULL +); + +CREATE TABLE address ( + AddressID INT PRIMARY KEY, + PersonID INT, + Street VARCHAR(255) NOT NULL, + City VARCHAR(100) NOT NULL, + Country VARCHAR(100) NOT NULL, + ZipCode VARCHAR(20) NOT NULL, + FOREIGN KEY (PersonID) REFERENCES person(PersonID) ON DELETE CASCADE +); + +CREATE TABLE favorites ( + FavoriteID INT PRIMARY KEY, + PersonID INT, + FavoriteBook VARCHAR(255), + FavoriteDrink VARCHAR(255), + FavoriteActivity VARCHAR(255), + FOREIGN KEY (PersonID) REFERENCES person(PersonID) ON DELETE CASCADE +); + +CREATE TABLE neighbour ( + NeighbourID INT PRIMARY KEY, + PersonID INT, + NeighbourName VARCHAR(255), + NeighbourEmail VARCHAR(255), + FOREIGN KEY (PersonID) REFERENCES person(PersonID) ON DELETE CASCADE +); diff --git a/Task 1/adress_import.sql b/Task 1/adress_import.sql new file mode 100644 index 0000000..59d861e --- /dev/null +++ b/Task 1/adress_import.sql @@ -0,0 +1,12 @@ +LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Assessment2425DataCaseScenario.csv' +INTO TABLE Address +FIELDS TERMINATED BY ',' +LINES TERMINATED BY '\r\n' +IGNORE 1 ROWS +(@dummy1, @dummy2, @dummy3, @Street, @City, @Country, @ZipCode, @dummy4, @dummy5, @dummy6, @dummy7, @dummy8, @dummy9, @dummy10) +SET + PersonID = (SELECT PersonID FROM Person WHERE Email = @dummy2), + Street = @Street, + City = @City, + Country = @Country, + ZipCode = @ZipCode; diff --git a/Task 1/favourite_import.sql b/Task 1/favourite_import.sql new file mode 100644 index 0000000..dea045b --- /dev/null +++ b/Task 1/favourite_import.sql @@ -0,0 +1,11 @@ +LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Assessment2425DataCaseScenario.csv' +INTO TABLE Favorites +FIELDS TERMINATED BY ',' +LINES TERMINATED BY '\r\n' +IGNORE 1 ROWS +(@dummy1, @dummy2, @dummy3, @dummy4, @dummy5, @dummy6, @dummy7, @FavoriteBook, @FavoriteDrink, @FavoriteActivity, @dummy8, @dummy9, @dummy10, @dummy11) +SET + PersonID = (SELECT PersonID FROM Person WHERE Email = @dummy2), + FavoriteBook = @FavoriteBook, + FavoriteDrink = @FavoriteDrink, + FavoriteActivity = @FavoriteActivity; diff --git a/Task 1/initial_setup.sql b/Task 1/initial_setup.sql new file mode 100644 index 0000000..999b87f --- /dev/null +++ b/Task 1/initial_setup.sql @@ -0,0 +1,2 @@ +CREATE DATABASE PeopleDB; +USE PeopleDB; \ No newline at end of file diff --git a/Task 1/neighbour2_import.sql b/Task 1/neighbour2_import.sql new file mode 100644 index 0000000..6573c29 --- /dev/null +++ b/Task 1/neighbour2_import.sql @@ -0,0 +1,11 @@ +LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Assessment2425DataCaseScenario.csv' +INTO TABLE Neighbour +FIELDS TERMINATED BY ',' +LINES TERMINATED BY '\r\n' +IGNORE 1 ROWS +(@dummy1, @dummy2, @dummy3, @du +mmy4, @dummy5, @dummy6, @dummy7, @dummy8, @dummy9, @dummy10, @Neighbour1, @Neighbour1Email, @Neighbour2, @Neighbour2Email) +SET + PersonID = (SELECT PersonID FROM Person WHERE Email = @dummy2), + NeighbourName = @Neighbour2, + NeighbourEmail = @Neighbour2Email; diff --git a/Task 1/neighbour_import.sql b/Task 1/neighbour_import.sql new file mode 100644 index 0000000..a273292 --- /dev/null +++ b/Task 1/neighbour_import.sql @@ -0,0 +1,10 @@ +LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Assessment2425DataCaseScenario.csv' +INTO TABLE Neighbour +FIELDS TERMINATED BY ',' +LINES TERMINATED BY '\r\n' +IGNORE 1 ROWS +(@dummy1, @dummy2, @dummy3, @dummy4, @dummy5, @dummy6, @dummy7, @dummy8, @dummy9, @dummy10, @Neighbour1, @Neighbour1Email, @Neighbour2, @Neighbour2Email) +SET + PersonID = (SELECT PersonID FROM Person WHERE Email = @dummy2), + NeighbourName = @Neighbour1, + NeighbourEmail = @Neighbour1Email; diff --git a/Task 1/person_import.sql b/Task 1/person_import.sql new file mode 100644 index 0000000..cc861cc --- /dev/null +++ b/Task 1/person_import.sql @@ -0,0 +1,9 @@ +LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Assessment2425DataCaseScenario.csv' +INTO TABLE Person +FIELDS TERMINATED BY ',' +LINES TERMINATED BY '\r\n' +IGNORE 1 ROWS +(@Name, Email, @DOB, @dummy1, @dummy2, @dummy3, @dummy4, @dummy5, @dummy6, @dummy7, @dummy8, @dummy9, @dummy10, @dummy11) +SET + PersonID = CAST(SUBSTRING_INDEX(@Name, ' ', -1) AS UNSIGNED), -- Extracts numeric ID + DOB = STR_TO_DATE(@DOB, '%m/%d/%Y'); diff --git a/Task 2/insert_data.py b/Task 2/insert_data.py new file mode 100644 index 0000000..b6e4cb4 --- /dev/null +++ b/Task 2/insert_data.py @@ -0,0 +1,39 @@ +import pandas as pd +from setup import collection + +# Load the Excel file (update the filename if needed) +file_path = "Assessment2425DataCaseScenario.xlsx" # Change to the correct file path +df = pd.read_excel(file_path) + +# Convert Excel data to a format suitable for MongoDB +persons_data = [] +for _, row in df.iterrows(): + person = { + "name": row["Name"], + "email": row["Email"], + "dob": row["DOB"], + "address": { + "street": row["Street"], + "city": row["City"], + "country": row["Country"], + "zip_code": str(row["Zip Code"]) # Convert zip code to string to prevent issues + }, + "favourites": { + "book": row["Favorite Book"], + "drink": row["Favorite Drink"], + "activity": row["Favorite Activity"] + }, + "neighbours": [ + {"name": row["Neighbour 1"], "email": row["Neighbour1Email"]} if pd.notna(row["Neighbour 1"]) else None, + {"name": row["Neighbour 2"], "email": row["Neighbour2Email"]} if pd.notna(row["Neighbour 2"]) else None + ] + } + + # Remove None values (if no neighbour exists) + person["neighbours"] = [n for n in person["neighbours"] if n is not None] + + persons_data.append(person) + +# Insert data into MongoDB +collection.insert_many(persons_data) +print("Excel data inserted into MongoDB successfully!") diff --git a/Task 2/queries.py b/Task 2/queries.py new file mode 100644 index 0000000..3852ced --- /dev/null +++ b/Task 2/queries.py @@ -0,0 +1,61 @@ +from setup import collection +from datetime import datetime + +# Function to calculate age from DOB +def calculate_age(dob): + if isinstance(dob, str): # If dob is a string, convert it + dob = datetime.strptime(dob, "%Y-%m-%d") # Adjust format if needed + + birth_year = dob.year # Extract year directly + current_year = datetime.now().year + return current_year - birth_year + +### 1️⃣ Display Person's Name and Age +print("\n--- Persons and Their Age ---") +for person in collection.find({}, {"name": 1, "dob": 1}): + age = calculate_age(person["dob"]) + print(f"Name: {person['name']}, Age: {age}") + +### 2️⃣ Group Persons by Their Favourite Drink and Return Average Age +print("\n--- Average Age by Favourite Drink ---") +pipeline = [ + { + "$group": { + "_id": "$favourites.drink", + "average_age": {"$avg": {"$subtract": [datetime.now().year, {"$toInt": {"$substr": ["$dob", 0, 4]}}]}} + } + } +] +results = collection.aggregate(pipeline) +for res in results: + print(f"Drink: {res['_id']}, Average Age: {res['average_age']}") + +### 3️⃣ Display Average Age of People Who Like Hiking +print("\n--- Average Age of People Who Like Hiking ---") +pipeline = [ + {"$match": {"favourites.activity": "Hiking"}}, + { + "$group": { + "_id": None, + "average_age": {"$avg": {"$subtract": [datetime.now().year, {"$toInt": {"$substr": ["$dob", 0, 4]}}]}} + } + } +] +result = list(collection.aggregate(pipeline)) +print(f"Average age of people who like Hiking: {result[0]['average_age']}") + +### 4️⃣ Display Total Number of People from Each City +print("\n--- Total Number of People per City ---") +pipeline = [ + {"$group": {"_id": "$address.city", "total_people": {"$sum": 1}}}, + {"$sort": {"total_people": 1}} +] +results = collection.aggregate(pipeline) +for res in results: + print(f"City: {res['_id']}, Total People: {res['total_people']}") + +### 5️⃣ Display Name of Person(s) Whose Neighbour is 'Neighbour C' +print("\n--- People Whose Neighbour is 'Neighbour C' ---") +results = collection.find({"neighbours.name": "Neighbor C"}, {"name": 1, "_id": 0}) +for person in results: + print(person["name"]) diff --git a/Task 2/setup.py b/Task 2/setup.py new file mode 100644 index 0000000..3fedda2 --- /dev/null +++ b/Task 2/setup.py @@ -0,0 +1,10 @@ +from pymongo import MongoClient + +# Connect to MongoDB +client = MongoClient("mongodb://localhost:27017/") + +# Create the database and collection +db = client["task2_nosql"] +collection = db["persons"] + +print("MongoDB connection successful!") diff --git a/__pycache__/setup.cpython-313.pyc b/__pycache__/setup.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6f6bd13c3f6b59b801666c39151b69a8116b12c GIT binary patch literal 391 zcmey&%ge>Uz`!7F^eX)a0|Ucj5C?{tp^VQi3=9lY8G;#t8NC_27>gJc7-ATe7=oEh z86hf)m|~cMnOPYa7>bx<n1flsES4BnC5B*Dm>LC!bT&=)mmm$AjJLRb^Yha4opUl% z^Gd3uazUJwBrARWoc!d(oQ(Y95-THf14DEDTihjy#o0#jdHKbKIk(sgQj3c7^NOqF zz}j7$6q57v@=}vaGV}8kic6D|Q;Un!N^=zbG}&&k7gU0cEdu%C7F#mds#{DcNw>I? z^K)__nr^Wc6lLa>tYr8Ma@Q@56ss85y!4#JycC6iqWrAX<dWhT$CR?fyyVmr1sA87 z;?$DT0=<IDTO2mI`6;D2sdhzt3=9mQU??_bU|{&b%*e=imqGp`8v~c<1yRGxoJI|7 oAJ`b!cshJ9vPv~D-QeY)z}Xqw!1a)U^#YsPRR;AU9tH*m02ZujdH?_b literal 0 HcmV?d00001 -- GitLab