My SQL Queries


    create database portfolio_1;

    use portfolio_1;

-- checking data

SELECT * FROM sales_data;

-- checking duplicate

SELECT DISTINCT status FROM sales_data;

SELECT DISTINCT year_id FROM sales_data;

SELECT DISTINCT country FROM sales_data;

SELECT DISTINCT dealsize FROM sales_data;

SELECT DISTINCT territory FROM sales_data;

-- ProductLine sales

SELECT productline, ROUND(SUM(sales), 2) salesByProductLine FROM sales_data
GROUP BY productline;

-- sales by year

SELECT year_id, ROUND(SUM(sales), 2) YearlySales
FROM sales_data
GROUP BY year_id;

-- month in year operations SELECT DISTINCT month_id
FROM sales_data
WHERE year_id = 2003
ORDER BY month_id;-- 12

SELECT DISTINCT month_id
FROM sales_data
WHERE year_id = 2004
ORDER BY month_id;-- 12

SELECT DISTINCT month_id
FROM sales_data
WHERE year_id = 2005
ORDER BY month_id;-- 5

SELECT dealsize, ROUND(SUM(sales), 2) DealSizeSales
FROM sales_data
GROUP BY dealsize
ORDER BY ROUND(SUM(sales), 2) DESC;

-- best month for sales in each year W/ number of Order

SELECT
    month_id,
    ROUND(SUM(sales), 2) AS 2005MonthlySales,
    COUNT(ordernumber) AS 2005MonthlyOrder
FROM sales_data
WHERE year_id = 2005
GROUP BY month_id
ORDER BY ROUND(SUM(sales), 2) DESC;

-- products sold in best month
SELECT
    productline,
    ROUND(SUM(sales), 2) AS 200311SalesPerYearPL,
    SUM(quantityordered) AS 200311QPerYearPL,
    COUNT(ordernumber) AS 200311NumOrderPerYearPL
FROM sales_data
WHERE month_id = 11 AND year_id = 2003
GROUP BY productline;

-- best selling product
SELECT
    productLine,
    ROUND(SUM(sales), 2) AS TotalSalesPP,
    ROUND(AVG(sales), 2) AS avgSalesPP
FROM sales_data
GROUP BY productline;

-- best ordered product

SELECT ProductLine, SUM(QuantityOrdered) AS TotalQOrdered
FROM Sales_data
GROUP BY productLine;

-- best country by Sales
SELECT
    Country,
    ROUND(SUM(sales), 2) AS TotalSalesCountry,
    ROUND(AVG(sales), 2) AS avgSalesCountry
FROM sales_data
GROUP BY country;

-- best city by sales

SELECT
    city,
    ROUND(SUM(sales), 2) AS TotalSalescity,
    ROUND(AVG(sales), 2) AS avgSalescity
FROM sales_data
GROUP BY city;

SELECT
    city,
    ROUND(SUM(sales), 2) AS TotalSalescity,
    ROUND(AVG(sales), 2) AS avgSalescity
FROM sales_data
WHERE year_id = 2003
GROUP BY city;



-- Fix date
SELECT REPLACE(orderdate, '0:00', '')
FROM sales_data;

UPDATE sales_data
SET orderdate = REPLACE(orderdate, '0:00', '')
WHERE orderdate LIKE ('%0:00%');

UPDATE sales_data
SET orderdate = REPLACE(orderdate, ' ', '')
WHERE rderdate LIKE (' ');

alter table sales_data
modify orderdate date;

-- convert text M/DD/YYYY to YYYY-MM-DD date in sql
UPDATE sales_data
SET orderdate = STR_TO_DATE(orderdate, '%m/%d/%Y');

 -- best customer by RFM ( Recency-Frequency-Monetary)
SELECT
    customername,
    ROUND(SUM(sales), 2) AS TotalSales,
    ROUND(AVG(sales), 2) AvgSales,
    ROUND(COUNT(ordernumber), 2) NumOfOrders,
    MAX(orderdate) AS lastOrderDate,
    (SELECT
            MAX(orderdate)
        FROM
            sales_data) AS MaxOrderdate,
    (- 1 * (DATEDIFF(MAX(orderdate),
            (SELECT
                    MAX(orderdate)
                FROM
                    sales_data)))) AS date_difference
FROM
    sales_data GROUP BY customername;


    -----------------------------

SELECT city, SUM(sales)
FROM sales_data
WHERE country = 'UK'
GROUP BY city;



-- What is the best product in United States?

SELECT country, YEAR_ID, PRODUCTLINE, SUM(sales) AS Revenue
FROM sales_data
WHERE country = 'USA'
GROUP BY country , YEAR_ID , PRODUCTLINE
ORDER BY 4 DESC;