diff --git a/Advanced DB Task #1.pdf b/Advanced DB Task #1.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8dc27613c487f3d3c9e9c78d82b8bd38eb5898d6
Binary files /dev/null and b/Advanced DB Task #1.pdf differ
diff --git a/Advanced DB Task #2.pdf b/Advanced DB Task #2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5e99c5a1b582043a360e3a431e2ef1d77134c9dc
Binary files /dev/null and b/Advanced DB Task #2.pdf differ
diff --git a/Advanced DB Task #3.pdf b/Advanced DB Task #3.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..220ab09669378acc1f20c715b704e49f874c4873
Binary files /dev/null and b/Advanced DB Task #3.pdf differ
diff --git a/Task 1/Cities Avg Persons.sql b/Task 1/Cities Avg Persons.sql
new file mode 100644
index 0000000000000000000000000000000000000000..04ff3ad8ecc5416f7e496a7df807964f8905c363
--- /dev/null
+++ b/Task 1/Cities Avg Persons.sql	
@@ -0,0 +1,5 @@
+SELECT City, COUNT(*) AS TotalPeople
+FROM Address
+GROUP BY City
+ORDER BY TotalPeople ASC;
+
diff --git a/Task 1/ER.mwb b/Task 1/ER.mwb
new file mode 100644
index 0000000000000000000000000000000000000000..72a8a3a7fe415c375229f14ce7e01d26ba96df4f
Binary files /dev/null and b/Task 1/ER.mwb differ
diff --git a/Task 1/ER.mwb.bak b/Task 1/ER.mwb.bak
new file mode 100644
index 0000000000000000000000000000000000000000..81353d4453ec6055f747deadfbea904d370b113d
Binary files /dev/null and b/Task 1/ER.mwb.bak differ
diff --git a/Task 1/FavDrink&AvgAge.sql b/Task 1/FavDrink&AvgAge.sql
new file mode 100644
index 0000000000000000000000000000000000000000..0fdfd3a862d2b669d11430027292fe2bf3c365cb
--- /dev/null
+++ b/Task 1/FavDrink&AvgAge.sql	
@@ -0,0 +1,7 @@
+USE PeopleDB;
+
+SELECT f.FavoriteDrink, AVG(TIMESTAMPDIFF(YEAR, p.DOB, CURDATE())) AS AvgAge
+FROM Person p
+JOIN favorites f ON p.PersonID = f.PersonID
+GROUP BY f.FavoriteDrink;
+
diff --git a/Task 1/Hiking&AvgAge.sql b/Task 1/Hiking&AvgAge.sql
new file mode 100644
index 0000000000000000000000000000000000000000..3c27f5e1f6d767b7b6983bc5fb50510dc5d1b1cd
--- /dev/null
+++ b/Task 1/Hiking&AvgAge.sql	
@@ -0,0 +1,5 @@
+SELECT AVG(TIMESTAMPDIFF(YEAR, p.DOB, CURDATE())) AS AvgAge
+FROM Person p
+JOIN favorites f ON p.PersonID = f.PersonID
+WHERE f.FavoriteActivity = 'Hiking';
+
diff --git a/Task 1/Neighbour C.sql b/Task 1/Neighbour C.sql
new file mode 100644
index 0000000000000000000000000000000000000000..addc2c7d9dd5b0910ff1d097fbaeb7a36e461a70
--- /dev/null
+++ b/Task 1/Neighbour C.sql	
@@ -0,0 +1,5 @@
+SELECT p.Name
+FROM Person p
+JOIN Neighbour n ON p.PersonID = n.PersonID
+WHERE n.NeighbourName = 'Neighbor C';
+
diff --git a/Task 1/Person&Age.sql b/Task 1/Person&Age.sql
new file mode 100644
index 0000000000000000000000000000000000000000..4806cff4b4f4f29e6d900925d43734b018f089a8
--- /dev/null
+++ b/Task 1/Person&Age.sql	
@@ -0,0 +1,2 @@
+USE PeopleDB;
+SELECT Name, TIMESTAMPDIFF(YEAR, DOB, CURDATE()) AS Age FROM Person;
diff --git a/Task 1/Table_setup.sql b/Task 1/Table_setup.sql
new file mode 100644
index 0000000000000000000000000000000000000000..ce9c9f0ff940a87f4931ed28833ecca4f6703040
--- /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 0000000000000000000000000000000000000000..59d861e0da8da3b7706ec972a56be22997f02947
--- /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 0000000000000000000000000000000000000000..dea045ba135238fe708136757dacd998a0fd5d33
--- /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 0000000000000000000000000000000000000000..999b87f8152d508c10ed6e818a0982b08b130c1e
--- /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 0000000000000000000000000000000000000000..6573c29d4070366fcd73d63612671ed75eff8739
--- /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 0000000000000000000000000000000000000000..a2732929fba2009803252dc4f7672ba1112d0922
--- /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 0000000000000000000000000000000000000000..cc861cc1b167bfd12561c26264d8980aaa9ea2a5
--- /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/Assessment2425DataCaseScenario.xlsx b/Task 2/Assessment2425DataCaseScenario.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..3d4158b5d78aa101245c944834bc0fd1132e611a
Binary files /dev/null and b/Task 2/Assessment2425DataCaseScenario.xlsx differ
diff --git a/Task 2/__pycache__/setup.cpython-313.pyc b/Task 2/__pycache__/setup.cpython-313.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..698b696980b8f39444177f9a50c8761b70b92c85
Binary files /dev/null and b/Task 2/__pycache__/setup.cpython-313.pyc differ
diff --git a/Task 2/insert_data.py b/Task 2/insert_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..0b139e66199bdb57cfb1991519bd9a569b808194
--- /dev/null
+++ b/Task 2/insert_data.py	
@@ -0,0 +1,36 @@
+import pandas as pd
+from setup import collection
+
+file_path = "Assessment2425DataCaseScenario.xlsx" 
+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
+        },
+        "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
+        ]
+    }
+    
+    person["neighbours"] = [n for n in person["neighbours"] if n is not None]
+
+    persons_data.append(person)
+
+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 0000000000000000000000000000000000000000..c9814893a8bf3089b6e12b06c1f61a42eaff5dd0
--- /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): 
+        dob = datetime.strptime(dob, "%Y-%m-%d") 
+
+    birth_year = dob.year  # Extract year directly
+    current_year = datetime.now().year
+    return current_year - birth_year
+
+# 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}")
+
+# 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']}")
+
+# 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']}")
+
+# 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']}")
+
+# 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 0000000000000000000000000000000000000000..3fedda2731729577e67b2e18192aeb921db22944
--- /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/Task 2/test.py b/Task 2/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..212e25f77b0c68b4a6e47ac19f7e38e1400b9a65
--- /dev/null
+++ b/Task 2/test.py	
@@ -0,0 +1,9 @@
+from setup import collection
+from datetime import datetime
+
+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"])
+