{"id":25878701,"url":"https://github.com/edochiari/amazon_sales_analysis-project","last_synced_at":"2026-07-14T15:02:21.259Z","repository":{"id":279404413,"uuid":"938647681","full_name":"EdoChiari/Amazon_Sales_Analysis-Project","owner":"EdoChiari","description":"Advanced SQL project analyzing over 20,000 sales records from an Amazon-like e-commerce platform. Focuses on customer behavior, product performance, and sales trends using PostgreSQL. Includes data cleaning, revenue analysis, inventory management, and an ERD diagram to visualize database schema.","archived":false,"fork":false,"pushed_at":"2025-02-25T11:24:54.000Z","size":1139,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-25T12:22:49.708Z","etag":null,"topics":["complexjoins","datacleaning","datatransformation","nestedqueries","pgadmin","postgresql","subqueries","windowfunctions"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EdoChiari.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-25T09:31:10.000Z","updated_at":"2025-02-25T11:32:51.000Z","dependencies_parsed_at":"2025-02-25T12:32:55.544Z","dependency_job_id":null,"html_url":"https://github.com/EdoChiari/Amazon_Sales_Analysis-Project","commit_stats":null,"previous_names":["edochiari/amazon_sales_analysis-project"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdoChiari%2FAmazon_Sales_Analysis-Project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdoChiari%2FAmazon_Sales_Analysis-Project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdoChiari%2FAmazon_Sales_Analysis-Project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdoChiari%2FAmazon_Sales_Analysis-Project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EdoChiari","download_url":"https://codeload.github.com/EdoChiari/Amazon_Sales_Analysis-Project/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241509404,"owners_count":19974066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["complexjoins","datacleaning","datatransformation","nestedqueries","pgadmin","postgresql","subqueries","windowfunctions"],"created_at":"2025-03-02T12:35:38.939Z","updated_at":"2025-10-25T12:32:29.776Z","avatar_url":"https://github.com/EdoChiari.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"---\n\n# **Amazon USA Sales Analysis Project**\n\n---\n\n## **Project Overview**\n\nI have worked on analyzing a dataset of over 20,000 sales records from an Amazon-like e-commerce platform. This project involves extensive querying of customer behavior, product performance, and sales trends using PostgreSQL. Through this project, I have tackled various SQL problems, including revenue analysis, customer segmentation, and inventory management.\n\nThe project also focuses on data cleaning, handling null values, and solving real-world business problems using structured queries.\n\nAn ERD diagram is included to visually represent the database schema and relationships between tables.\n\n---\n\n![Amazon ERD](https://github.com/EdoChiari/Amazon_Sales_Analysis-Project/blob/main/Amazon%20ERD.png?raw=true)\n\n\n## **Database Setup \u0026 Design**\n\n### **Schema Structure**\n\n```sql\nCREATE TABLE category\n(\n  category_id\tINT PRIMARY KEY,\n  category_name VARCHAR(20)\n);\n\n-- customers TABLE\nCREATE TABLE customers\n(\n  customer_id INT PRIMARY KEY,\t\n  first_name\tVARCHAR(20),\n  last_name\tVARCHAR(20),\n  state VARCHAR(20),\n  address VARCHAR(5) DEFAULT ('xxxx')\n);\n\n-- sellers TABLE\nCREATE TABLE sellers\n(\n  seller_id INT PRIMARY KEY,\n  seller_name\tVARCHAR(25),\n  origin VARCHAR(15)\n);\n\n-- products table\n  CREATE TABLE products\n  (\n  product_id INT PRIMARY KEY,\t\n  product_name VARCHAR(50),\t\n  price\tFLOAT,\n  cogs\tFLOAT,\n  category_id INT, -- FK \n  CONSTRAINT product_fk_category FOREIGN KEY(category_id) REFERENCES category(category_id)\n);\n\n-- orders\nCREATE TABLE orders\n(\n  order_id INT PRIMARY KEY, \t\n  order_date\tDATE,\n  customer_id\tINT, -- FK\n  seller_id INT, -- FK \n  order_status VARCHAR(15),\n  CONSTRAINT orders_fk_customers FOREIGN KEY (customer_id) REFERENCES customers(customer_id),\n  CONSTRAINT orders_fk_sellers FOREIGN KEY (seller_id) REFERENCES sellers(seller_id)\n);\n\nCREATE TABLE order_items\n(\n  order_item_id INT PRIMARY KEY,\n  order_id INT,\t-- FK \n  product_id INT, -- FK\n  quantity INT,\t\n  price_per_unit FLOAT,\n  CONSTRAINT order_items_fk_orders FOREIGN KEY (order_id) REFERENCES orders(order_id),\n  CONSTRAINT order_items_fk_products FOREIGN KEY (product_id) REFERENCES products(product_id)\n);\n\n-- payment TABLE\nCREATE TABLE payments\n(\n  payment_id\t\n  INT PRIMARY KEY,\n  order_id INT, -- FK \t\n  payment_date DATE,\n  payment_status VARCHAR(20),\n  CONSTRAINT payments_fk_orders FOREIGN KEY (order_id) REFERENCES orders(order_id)\n);\n\nCREATE TABLE shippings\n(\n  shipping_id\tINT PRIMARY KEY,\n  order_id\tINT, -- FK\n  shipping_date DATE,\t\n  return_date\t DATE,\n  shipping_providers\tVARCHAR(15),\n  delivery_status VARCHAR(15),\n  CONSTRAINT shippings_fk_orders FOREIGN KEY (order_id) REFERENCES orders(order_id)\n);\n\nCREATE TABLE inventory\n(\n  inventory_id INT PRIMARY KEY,\n  product_id INT, -- FK\n  stock INT,\n  warehouse_id INT,\n  last_stock_date DATE,\n  CONSTRAINT inventory_fk_products FOREIGN KEY (product_id) REFERENCES products(product_id)\n  );\n```\n\n---\n\n## **Task: Data Cleaning**\n\nI cleaned the dataset by:\n- **Removing duplicates**: Duplicates in the customer and order tables were identified and removed.\n- **Handling missing values**: Null values in critical fields (e.g., customer address, payment status) were either filled with default values or handled using appropriate methods.\n\n---\n\n## **Handling Null Values**\n\nNull values were handled based on their context:\n- **Customer addresses**: Missing addresses were assigned default placeholder values.\n- **Payment statuses**: Orders with null payment statuses were categorized as “Pending.”\n- **Shipping information**: Null return dates were left as is, as not all shipments are returned.\n\n---\n\n## **Objective**\n\nThe primary objective of this project is to showcase SQL proficiency through complex queries that address real-world e-commerce business challenges. The analysis covers various aspects of e-commerce operations, including:\n- Customer behavior\n- Sales trends\n- Inventory management\n- Payment and shipping analysis\n- Forecasting and product performance\n  \n\n## **Identifying Business Problems**\n\nKey business problems identified:\n1. Low product availability due to inconsistent restocking.\n2. High return rates for specific product categories.\n3. Significant delays in shipments and inconsistencies in delivery times.\n4. High customer acquisition costs with a low customer retention rate.\n\n---\n\n## **Solving Business Problems**\n\n### Solutions Implemented:\n1. Top Selling Products\nQuery the top 10 products by total sales value.\nChallenge: Include product name, total quantity sold, and total sales value.\n\n```sql\nSELECT \n    oi.product_id,\n    p.product_name,\n    ROUND(SUM(oi.total_sale)::numeric, 2) AS total_sale,\n    COUNT(o.order_id) AS total_orders\nFROM orders AS o\nJOIN order_items AS oi ON oi.order_id = o.order_id\nJOIN products AS p ON p.product_id = oi.product_id\nGROUP BY oi.product_id, p.product_name\nORDER BY total_sale DESC\nLIMIT 10;\n```\n\n2. Revenue by Category\nCalculate total revenue generated by each product category.\nChallenge: Include the percentage contribution of each category to total revenue.\n\n```sql\nSELECT \n    c.category_id,\n    c.category_name,\n    ROUND(SUM(oi.total_sale)::numeric, 2) AS total_sale,\n    ROUND(\n        (SUM(oi.total_sale)::numeric / \n            (SELECT SUM(total_sale)::numeric FROM order_items)\n        ) * 100, \n        2\n    ) AS contribution\nFROM order_items AS oi\nJOIN products AS p ON p.product_id = oi.product_id\nLEFT JOIN category AS c ON c.category_id = p.category_id\nGROUP BY c.category_id, c.category_name\nORDER BY total_sale DESC;\n```\n\n3. Average Order Value (AOV)\nCompute the average order value for each customer.\nChallenge: Include only customers with more than 5 orders.\n\n```sql\nSELECT \n    c.customer_id,\n    CONCAT(c.first_name, ' ', c.last_name) AS full_name,\n    ROUND(SUM(oi.total_sale)::numeric / COUNT(o.order_id),2) AS AOV\nFROM orders AS o\nJOIN customers AS c ON c.customer_id = o.customer_id\nJOIN order_items AS oi ON oi.order_id = o.order_id\nGROUP BY c.customer_id, full_name\nHAVING COUNT(o.order_id) \u003e 5;\n\n```\n\n4. Monthly Sales Trend\nQuery monthly total sales over the past year.\nChallenge: Display the sales trend, grouping by month, return current_month sale, last month sale!\n\n```sql\nSELECT \n\tyear,\n\tmonth,\n\ttotal_sale as current_month_sale,\n\tLAG(total_sale, 1) OVER(ORDER BY year, month) as last_month_sale\nFROM ---\n(\nSELECT \n\tEXTRACT(MONTH FROM o.order_date) as month,\n\tEXTRACT(YEAR FROM o.order_date) as year,\n\tROUND(\n\t\t\tSUM(oi.total_sale::numeric)\n\t\t\t,2) as total_sale\nFROM orders as o\nJOIN\norder_items as oi\nON oi.order_id = o.order_id\nWHERE o.order_date \u003e= CURRENT_DATE - INTERVAL '1 year'\nGROUP BY 1, 2\nORDER BY year, month\n) as t1\n```\n\n\n5. Customers with No Purchases\nFind customers who have registered but never placed an order.\nChallenge: List customer details and the time since their registration.\n\n```sql\nSELECT \n\tc.customer_id,\n\tCONCAT(c.first_name, ' ', c.last_name) AS full_name,\n\tc.state\nFROM customers AS c\nLEFT JOIN\norders AS o\nON o.customer_id = c.customer_id\nWHERE o.customer_id IS NULL;\n```\n\n6. Least-Selling Categories by State\nIdentify the least-selling product category for each state.\nChallenge: Include the total sales for that category within each state.\n\n```sql\nWITH ranking_table AS (\n    SELECT \n        c.state,\n        cat.category_name,\n        ROUND(SUM(oi.total_sale)::numeric, 2) AS total_sales,\n        RANK() OVER (PARTITION BY c.state ORDER BY SUM(oi.total_sale) ASC) AS rank\n    FROM orders AS o\n    JOIN customers AS c ON o.customer_id = c.customer_id\n    JOIN order_items AS oi ON o.order_id = oi.order_id\n    JOIN products AS p ON oi.product_id = p.product_id\n    JOIN category AS cat ON cat.category_id = p.category_id\n    GROUP BY c.state, cat.category_name\n)\n\nSELECT \n\tstate,\n\tcategory_name,\n\ttotal_sales\nFROM ranking_table\nWHERE rank = 1;\n```\n\n\n7. Customer Lifetime Value (CLTV)\nCalculate the total value of orders placed by each customer over their lifetime.\nChallenge: Rank customers based on their CLTV.\n\n```sql\nSELECT \n    c.customer_id,\n    CONCAT(c.first_name, ' ', c.last_name) AS full_name,\n    ROUND(SUM(oi.total_sale)::numeric, 2) AS CLTV,\n    DENSE_RANK() OVER (ORDER BY SUM(oi.total_sale) DESC) AS cust_ranking\nFROM orders AS o\nJOIN customers AS c ON o.customer_id = c.customer_id\nJOIN order_items AS oi ON oi.order_id = o.order_id\nGROUP BY c.customer_id, full_name\nORDER BY cust_ranking;\n```\n\n\n8. Inventory Stock Alerts\nQuery products with stock levels below a certain threshold (e.g., less than 10 units).\nChallenge: Include last restock date and warehouse information.\n\n```sql\nSELECT \n\ti.inventory_id,\n\tp.product_name,\n\ti.stock AS current_stock_left,\n\ti.last_stock_date,\n\ti.warehouse_id\nFROM inventory AS i\nJOIN products AS p ON p.product_id = i.product_id\nWHERE stock \u003c 10\n```\n\n9. Shipping Delays\nIdentify orders where the shipping date is later than 3 days after the order date.\nChallenge: Include customer, order details, and delivery provider.\n\n```sql\nSELECT \n    c.*,\n    o.*,\n    s.shipping_providers\nFROM orders AS o\nJOIN customers AS c ON c.customer_id = o.customer_id\nJOIN shippings AS s ON o.order_id = s.order_id\nWHERE s.shipping_date \u003e o.order_date + INTERVAL '3 day';\n```\n\n10. Payment Success Rate \nCalculate the percentage of successful payments across all orders.\nChallenge: Include breakdowns by payment status (e.g., failed, pending).\n\n```sql\nSELECT \n    p.payment_status,\n    COUNT(*) AS total_cnt,\n    ROUND(COUNT(*)::numeric / (SELECT COUNT(*) FROM payments)::numeric * 100, 2) AS percentage\nFROM orders AS o\nJOIN payments AS p ON o.order_id = p.order_id\nGROUP BY p.payment_status;\n```\n\n11. Top Performing Sellers\nFind the top 5 sellers based on total sales value.\nChallenge: Include both successful and failed orders, and display their percentage of successful orders.\n\n```sql\nWITH top_sellers AS (\n    SELECT \n        s.seller_id,\n        s.seller_name,\n        ROUND(SUM(oi.total_sale)::numeric, 2) AS total_sale\n    FROM orders AS o\n    JOIN sellers AS s ON o.seller_id = s.seller_id\n    JOIN order_items AS oi ON o.order_id = oi.order_id\n    GROUP BY s.seller_id, s.seller_name\n    ORDER BY total_sale DESC\n    LIMIT 5\n),\n\nsellers_reports AS (\n    SELECT \n        o.seller_id,\n        tp.seller_name,\n        o.order_status,\n        COUNT(*) AS total_orders\n    FROM orders AS o\n    JOIN top_sellers AS tp ON o.seller_id = tp.seller_id\n    WHERE o.order_status NOT IN ('Inprogress', 'Returned')\n    GROUP BY o.seller_id, tp.seller_name, o.order_status\n)\n\nSELECT\n    seller_id,\n    seller_name,\n    SUM(CASE WHEN order_status = 'Completed' THEN total_orders ELSE 0 END) AS completed_orders,\n    SUM(CASE WHEN order_status = 'Cancelled' THEN total_orders ELSE 0 END) AS cancelled_orders,\n    SUM(total_orders) AS total_orders,\n    ROUND(\n        COALESCE(SUM(CASE WHEN order_status = 'Completed' THEN total_orders ELSE 0 END)::numeric \n        / NULLIF(SUM(total_orders), 0)::numeric * 100, 0), \n        2\n    ) AS perc_successful_orders\nFROM sellers_reports\nGROUP BY seller_id, seller_name\nORDER BY perc_successful_orders DESC;\n```\n\n\n12. Product Profit Margin\nCalculate the profit margin for each product (difference between price and cost of goods sold).\nChallenge: Rank products by their profit margin, showing highest to lowest.\n*/\n\n\n```sql\nSELECT \n    p.product_id,\n    p.product_name,\n    ROUND(\n        (\n            SUM(oi.total_sale - (p.cogs * oi.quantity))::numeric \n            / NULLIF(SUM(oi.total_sale), 0)::numeric\n        ) * 100,\n        2\n    ) AS profit_margin\nFROM order_items AS oi\nJOIN products AS p ON oi.product_id = p.product_id\nGROUP BY p.product_id, p.product_name\nORDER BY profit_margin DESC;\n\n```\n\n13. Most Returned Products\nQuery the top 10 products by the number of returns.\nChallenge: Display the return rate as a percentage of total units sold for each product.\n\n```sql\nSELECT \n    p.product_id,\n    p.product_name,\n    COUNT(*) AS total_unit_sold,\n    SUM(CASE WHEN o.order_status = 'Returned' THEN 1 ELSE 0 END) AS total_returned,\n    ROUND(\n        SUM(CASE WHEN o.order_status = 'Returned' THEN 1 ELSE 0 END)::numeric \n        / NULLIF(COUNT(*), 0)::numeric, \n        2\n    ) * 100 AS perc_tot_ret\nFROM order_items AS oi\nJOIN products AS p ON oi.product_id = p.product_id\nJOIN orders AS o ON oi.order_id = o.order_id\nGROUP BY p.product_id, p.product_name\nORDER BY perc_tot_ret DESC\nLIMIT 10;\n```\n\n14. Inactive Sellers\nIdentify sellers who haven’t made any sales in the last 6 months.\nChallenge: Show the last sale date and total sales from those sellers.\n\n```sql\nWITH cte1 AS (\n    SELECT \n        s.seller_id,\n        s.seller_name\n    FROM sellers AS s\n    WHERE NOT EXISTS (\n        SELECT 1 \n        FROM orders AS o\n        WHERE o.seller_id = s.seller_id \n        AND o.order_date \u003e= CURRENT_DATE - INTERVAL '6 month'\n    )\n)\n\nSELECT \n    cte1.seller_id,\n    cte1.seller_name,\n    MAX(o.order_date) AS last_sale_date,\n    ROUND(SUM(oi.total_sale)::numeric, 2) AS total_sales\nFROM cte1\nJOIN orders AS o \n    ON cte1.seller_id = o.seller_id\n    AND o.order_date \u003c CURRENT_DATE - INTERVAL '6 month'\nJOIN order_items AS oi \n    ON o.order_id = oi.order_id\nGROUP BY cte1.seller_id, cte1.seller_name\nHAVING SUM(oi.total_sale) \u003e 0\nORDER BY last_sale_date DESC;\n\n```\n\n\n15. IDENTITY customers into returning or new\nif the customer has done more than 5 return categorize them as returning otherwise new\nChallenge: List customers id, name, total orders, total returns\n\n```sql\nSELECT\n    cte.customer_id,\n    cte.full_name AS customers,\n    cte.total_orders,\n    cte.total_return,\n    CASE WHEN cte.total_return \u003e 5 THEN 'Returning customer' ELSE 'NEW' END AS customer_category\nFROM (\n    SELECT \n        c.customer_id,\n        CONCAT(c.first_name, ' ', c.last_name) AS full_name,\n        COUNT(o.order_id) AS total_orders,\n        SUM(CASE WHEN o.order_status = 'Returned' THEN 1 ELSE 0 END) AS total_return\n    FROM customers AS c\n    JOIN orders AS o ON c.customer_id = o.customer_id\n    JOIN shippings AS s ON o.order_id = s.order_id  -- Fixed JOIN condition\n    GROUP BY c.customer_id, full_name\n) AS cte;\n```\n\n\n16. Top 5 Customers by Orders in Each State\nIdentify the top 5 customers with the highest number of orders for each state.\nChallenge: Include the number of orders and total sales for each customer.\n```sql\nSELECT *\nFROM (\n    SELECT\n        c.state,\n        CONCAT(c.first_name, ' ', c.last_name) AS full_name,\n        COUNT(o.order_id) AS total_orders,\n        ROUND(SUM(oi.total_sale)::numeric, 2) AS total_sale,\n        DENSE_RANK() OVER(PARTITION BY c.state ORDER BY COUNT(o.order_id) DESC) AS rank\n    FROM orders AS o\n    JOIN order_items AS oi ON o.order_id = oi.order_id\n    JOIN customers AS c ON o.customer_id = c.customer_id\n    GROUP BY c.state, full_name\n) AS ranked_customers\nWHERE rank \u003c= 5;\n```\n\n17. Revenue by Shipping Provider\nCalculate the total revenue handled by each shipping provider.\nChallenge: Include the total number of orders handled and the average delivery time for each provider.\n\n```sql\nSELECT \n    s.shipping_providers,\n    COUNT(o.order_id) AS order_handled,\n    ROUND(SUM(oi.total_sale)::numeric, 2) AS total_sale,\n    COALESCE(ROUND(AVG(s.return_date - s.shipping_date)::numeric, 2), 0) AS average_days\nFROM orders AS o\nJOIN order_items AS oi ON oi.order_id = o.order_id\nJOIN shippings AS s ON s.order_id = o.order_id\nGROUP BY s.shipping_providers;\n```\n\n18. Top 10 product with highest decreasing revenue ratio compare to year 2022 and year 2023\nChallenge: Return product_id, product_name, category_name, 2022 revenue and 2023 revenue decrease ratio at end Round the result\nNote: Decrease ratio = y23-y22/y22* 100\n\n```sql\nWITH year_2022 AS (\n    SELECT \n        p.product_id,\n        p.product_name,\n        c.category_name,\n        ROUND(SUM(oi.total_sale)::numeric, 2) AS revenue\n    FROM orders AS o\n    JOIN order_items AS oi ON oi.order_id = o.order_id\n    JOIN products AS p ON p.product_id = oi.product_id\n    JOIN category AS c ON c.category_id = p.category_id\n    WHERE EXTRACT(YEAR FROM o.order_date) = 2022\n    GROUP BY p.product_id, p.product_name, c.category_name\n),\n\nyear_2023 AS (\n    SELECT \n        p.product_id,\n        p.product_name,\n        c.category_name,\n        ROUND(SUM(oi.total_sale)::numeric, 2) AS revenue\n    FROM orders AS o\n    JOIN order_items AS oi ON oi.order_id = o.order_id\n    JOIN products AS p ON p.product_id = oi.product_id\n    JOIN category AS c ON c.category_id = p.category_id\n    WHERE EXTRACT(YEAR FROM o.order_date) = 2023\n    GROUP BY p.product_id, p.product_name, c.category_name\n)\n\nSELECT\n    y22.product_id,\n    y22.product_name,\n    y22.category_name,\n    y22.revenue AS revenues_22,\n    y23.revenue AS revenues_23,\n    ROUND(((y23.revenue - y22.revenue) / y22.revenue) * 100, 2) AS revenue_dec_ratio\nFROM year_2022 AS y22\nJOIN year_2023 AS y23 ON y22.product_id = y23.product_id\nWHERE y22.revenue \u003e y23.revenue  \nORDER BY revenue_dec_ratio ASC\nLIMIT 10;\n```\n\n## **Learning Outcomes**\n\nThis project enabled me to:\n- Design and implement a normalized database schema.\n- Clean and preprocess real-world datasets for analysis.\n- Use advanced SQL techniques, including window functions, subqueries, and joins.\n- Conduct in-depth business analysis using SQL.\n- Optimize query performance and handle large datasets efficiently.\n\n---\n\n## **Conclusion**\n\nThis advanced SQL project successfully demonstrates my ability to solve real-world e-commerce problems using structured queries. From improving customer retention to optimizing inventory and logistics, the project provides valuable insights into operational challenges and solutions.\n\nBy completing this project, I have gained a deeper understanding of how SQL can be used to tackle complex data problems and drive business decision-making.\n\n---\n\n### **Entity Relationship Diagram (ERD)**\n![Updated ERD - Amazon](https://github.com/EdoChiari/Amazon_Sales_Analysis-Project/blob/main/Updated%20ERD%20-%20Amazon.png?raw=true)\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedochiari%2Famazon_sales_analysis-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedochiari%2Famazon_sales_analysis-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedochiari%2Famazon_sales_analysis-project/lists"}