Skip to content

Latest commit

 

History

History
281 lines (235 loc) · 5.4 KB

leetcode-problem-list.md

File metadata and controls

281 lines (235 loc) · 5.4 KB

LeetCode SQL Problem List and Solution

1. Combine two tables :

Solution :

SELECT 
    p.firstName, 
    p.lastName, 
    a.city, 
    a.state
FROM Person AS p
LEFT JOIN Address AS a ON p.personId = a.personId;

2. Duplicate Emails :

Solution :

SELECT email
FROM Person
GROUP BY email
HAVING COUNT(email) > 1

3. Customers who never order :

Solution : LEFT JOIN with IS NULL : (Recommended)

SELECT Customers.name AS Customers
FROM Customers
LEFT JOIN Orders ON Customers.id = Orders.customerId
WHERE Orders.customerId IS NULL;

Or, Solution : NOT IN with a Subquery:

SELECT name AS Customers
FROM Customers
WHERE id NOT IN (
    SELECT customerId 
    FROM Orders
);

4. Delete duplicate emails :

Solution :

DELETE FROM Person
WHERE id NOT IN (
    SELECT id
    FROM (
        SELECT MIN(id) AS id
        FROM Person
        GROUP BY email 
    ) AS min_ids
);

5. Rising temperature :

Solution :

SELECT w1.id
FROM Weather AS w1, Weather AS w2
WHERE DATEDIFF(w1.recordDate, w2.recordDate) = 1 AND
      w1.temperature > w2.temperature

6. Find customer referee :

Solution :

SELECT name FROM Customer
WHERE referee_id != 2 OR referee_id is NULL
ORDER BY name;

7. Big countries: :

Solution :

SELECT name, population, area FROM World
WHERE area >= 3000000 OR population >= 25000000
ORDER BY name;

8. Classes more than 5 students :

Solution :

SELECT 
    class
FROM 
    Courses
GROUP BY
    class
HAVING COUNT(class) >=5;

9. Sales person :

Solution :

SELECT s.name AS name
FROM SalesPerson AS s
WHERE s.sales_id NOT IN (
    SELECT sales_id
    FROM Orders
    WHERE com_id IN (
        SELECT com_id 
        FROM Company
        WHERE name = 'RED'
    )
);

10. Triangle Judgement :

Solution :

SELECT 
    x, y, z,
    CASE
        WHEN x + y > z AND x + z > y AND y + z > x THEN 'Yes'
        ELSE 'No'
    END AS triangle
FROM 
    Triangle;

11. Biggest Single Number :

Solution :

SELECT
    MAX(number) AS num
FROM 
(
    SELECT 
        IF(COUNT(num) > 1, null, num) AS number
    FROM 
        MyNumbers
    GROUP BY
        num
    HAVING 
        number IS NOT NULL
) AS subquery

12. Not Boring Movies:

Solution :

SELECT id, movie, description, rating
FROM Cinema
HAVING id % 2 <> 0 AND description != 'boring'
ORDER BY rating DESC;

13. Swap Salary :

Solution :

UPDATE Salary
SET 
sex = IF(sex='m', "f", "m");

14. Product Sales Analysis 1 :

Solution :

SELECT Product.product_name, Sales.year, Sales.price
FROM Sales
INNER JOIN Product ON Product.product_id=Sales.product_id;

15. Project Employees 1 :

Solution :

SELECT 
    p.project_id AS project_id,
    ROUND(AVG(e.experience_years), 2) AS average_years
FROM Project AS p
JOIN Employee AS e ON e.employee_id = p.employee_id
GROUP BY project_id;

16. Sales Analysis III :

Solution :

SELECT DISTINCT p.product_id, p.product_name
FROM Product p
JOIN Sales s ON p.product_id = s.product_id
WHERE s.sale_date BETWEEN '2019-01-01' AND '2019-03-31'
AND NOT EXISTS (
    SELECT 1 
    FROM Sales s2
    WHERE s2.product_id = s.product_id
    AND (s2.sale_date < '2019-01-01' OR s2.sale_date > '2019-03-31')
);