Skip to content

Commit 8647caa

Browse files
committed
Added SQL solutions
1 parent 60bd08a commit 8647caa

39 files changed

+248
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SELECT actor_id,
2+
director_id
3+
FROM ActorDirector
4+
GROUP BY actor_id, director_id
5+
HAVING COUNT(*) >= 3;

SQL/Article Views I.sql

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SELECT DISTINCT author_id AS id
2+
FROM Views
3+
WHERE author_id = viewer_id
4+
ORDER BY id;

SQL/Bank Account Summary II.sql

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT u.name,
2+
SUM(t.amount) AS balance
3+
FROM Users AS u LEFT JOIN Transactions AS t
4+
ON u.account = t.account
5+
GROUP BY u.name
6+
HAVING SUM(t.amount) >= 10000;

SQL/Calculate Special Bonus.sql

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SELECT employee_id,
2+
IF (employee_id % 2 != 0 AND name NOT LIKE 'M%', salary, 0) AS bonus
3+
FROM Employees
4+
ORDER BY employee_id;

SQL/Capital GainLoss.sql

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SELECT stock_name,
2+
SUM(IF(operation='Buy', -price, price)) AS capital_gain_loss
3+
FROM Stocks
4+
GROUP BY stock_name;

SQL/Combine Two Tables.sql

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT FirstName,
2+
LastName,
3+
City,
4+
State
5+
FROM Person AS p LEFT JOIN Address AS a
6+
ON p.PersonId = a.PersonId;

SQL/Consecutive Numbers.sql

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
SELECT DISTINCT l1.Num AS ConsecutiveNums
2+
FROM Logs l1,
3+
Logs l2,
4+
Logs l3
5+
WHERE l1.Id = l2.Id - 1
6+
AND l2.Id = l3.Id - 1
7+
AND l1.Num = l2.Num
8+
AND l2.Num = l3.Num;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SELECT customer_number
2+
FROM Orders
3+
GROUP BY customer_number
4+
ORDER BY COUNT(*) DESC
5+
LIMIT 1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT v.customer_id,
2+
COUNT(*) AS count_no_trans
3+
FROM Visits AS v LEFT JOIN Transactions AS t
4+
ON v.visit_id = t.visit_id
5+
WHERE t.visit_id IS NULL
6+
GROUP BY customer_id;

SQL/Customers Who Never Order.sql

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT name AS 'Customers'
2+
FROM Customers
3+
WHERE id NOT IN (
4+
SELECT customerId
5+
FROM Orders
6+
);

SQL/Daily Leads and Partners.sql

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT date_id,
2+
make_name,
3+
COUNT(DISTINCT lead_id) AS unique_leads,
4+
COUNT(DISTINCT partner_id) AS unique_partners
5+
FROM DailySales
6+
GROUP BY date_id, make_name;

SQL/Delete Duplicate Emails.sql

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
DELETE p1
2+
FROM Person p1,
3+
Person p2
4+
WHERE p1.Email = p2.Email
5+
AND p1.Id > p2.Id;

SQL/Department Top Three Salaries.sql

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
SELECT d.Name AS Department,
2+
a.Name AS Employee,
3+
a.Salary
4+
FROM (
5+
SELECT e.*,
6+
DENSE_RANK() OVER (PARTITION BY DepartmentId ORDER BY Salary DESC) AS DepSalRank
7+
FROM Employee e
8+
) a JOIN Department d
9+
ON a.DepartmentId = d. Id
10+
WHERE DepSalRank <= 3;

SQL/Duplicate Emails.sql

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SELECT email
2+
FROM Person
3+
GROUP BY email
4+
HAVING COUNT(*) > 1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SELECT emp.name AS Employee
2+
FROM Employee emp JOIN Employee man
3+
ON emp.managerId = man.id
4+
WHERE emp.salary > man.salary;
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
WITH Emp AS (
2+
SELECT *
3+
FROM Employees LEFT JOIN Salaries USING (employee_id)
4+
UNION
5+
SELECT *
6+
FROM Employees RIGHT JOIN Salaries USING (employee_id)
7+
)
8+
9+
SELECT employee_id
10+
FROM Emp
11+
WHERE salary IS NULL
12+
OR name IS NULL
13+
ORDER BY employee_id;

SQL/Find Customer Referee.sql

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SELECT name
2+
FROM Customer
3+
WHERE referee_id != 2
4+
OR referee_id IS NULL;

SQL/Find Followers Count.sql

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SELECT user_id,
2+
COUNT(follower_id) AS followers_count
3+
FROM Followers
4+
GROUP BY user_id
5+
ORDER BY user_id;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SELECT event_day AS day,
2+
emp_id,
3+
SUM(out_time - in_time) AS total_time
4+
FROM Employees
5+
GROUP BY emp_id, event_day;

SQL/Fix Names in a Table.sql

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SELECT user_id,
2+
CONCAT(UPPER(SUBSTRING(name, 1, 1)),
3+
LOWER(SUBSTRING(name, 2))) AS name
4+
FROM Users
5+
ORDER BY user_id;

SQL/Game Play Analysis I.sql

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SELECT player_id,
2+
MIN(event_date) AS first_login
3+
FROM Activity
4+
GROUP BY player_id
5+
ORDER BY player_id;
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT sell_date,
2+
COUNT(DISTINCT product) AS num_sold,
3+
GROUP_CONCAT(DISTINCT product ORDER BY product ASC SEPARATOR ',') products
4+
FROM activities
5+
GROUP BY sell_date
6+
ORDER BY sell_date;

SQL/Market Analysis I.sql

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT u.user_id AS buyer_id,
2+
join_date,
3+
COALESCE(COUNT(order_date), 0) AS orders_in_2019
4+
FROM Users AS u LEFT JOIN Orders o
5+
ON u.user_id = o.buyer_id AND YEAR(order_date) = '2019'
6+
GROUP BY u.user_id;

SQL/Not Boring Movies.sql

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SELECT *
2+
FROM Cinema
3+
WHERE id % 2 = 1 AND description != "boring"
4+
ORDER BY rating DESC;

SQL/Nth Highest Salary.sql

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
2+
BEGIN
3+
SET N = N - 1;
4+
RETURN (
5+
SELECT DISTINCT(salary)
6+
FROM Employee
7+
ORDER BY salary DESC
8+
LIMIT 1
9+
OFFSET N
10+
);
11+
END

SQL/Patients With a Condition.sql

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SELECT *
2+
FROM Patients
3+
WHERE conditions REGEXP '\\bDIAB1';

SQL/Rearrange Products Table.sql

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
SELECT product_id,
2+
'store1' AS store,
3+
store1 AS price
4+
FROM Products
5+
WHERE store1 IS NOT NULL
6+
7+
UNION
8+
9+
SELECT product_id,
10+
'store2' AS store,
11+
store2 AS price
12+
FROM Products
13+
WHERE store2 IS NOT NULL
14+
15+
UNION
16+
17+
SELECT product_id,
18+
'store3' AS store,
19+
store3 AS price
20+
FROM Products
21+
WHERE store3 IS NOT NULL
22+
23+
ORDER BY product_id, store;
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SELECT product_id
2+
FROM Products
3+
WHERE low_fats = 'Y'
4+
AND recyclable = 'Y';

SQL/Reformat Department Table.sql

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
SELECT
2+
id,
3+
MAX(CASE WHEN month = 'Jan' THEN revenue ELSE null END) AS Jan_Revenue,
4+
MAX(CASE WHEN month = 'Feb' THEN revenue ELSE null END) AS Feb_Revenue,
5+
MAX(CASE WHEN month = 'Mar' THEN revenue ELSE null END) AS Mar_Revenue,
6+
MAX(CASE WHEN month = 'Apr' THEN revenue ELSE null END) AS Apr_Revenue,
7+
MAX(CASE WHEN month = 'May' THEN revenue ELSE null END) AS May_Revenue,
8+
MAX(CASE WHEN month = 'Jun' THEN revenue ELSE null END) AS Jun_Revenue,
9+
MAX(CASE WHEN month = 'Jul' THEN revenue ELSE null END) AS Jul_Revenue,
10+
MAX(CASE WHEN month = 'Aug' THEN revenue ELSE null END) AS Aug_Revenue,
11+
MAX(CASE WHEN month = 'Sep' THEN revenue ELSE null END) AS Sep_Revenue,
12+
MAX(CASE WHEN month = 'Oct' THEN revenue ELSE null END) AS Oct_Revenue,
13+
MAX(CASE WHEN month = 'Nov' THEN revenue ELSE null END) AS Nov_Revenue,
14+
MAX(CASE WHEN month = 'Dec' THEN revenue ELSE null END) AS Dec_Revenue
15+
FROM Department
16+
GROUP BY id;

SQL/Rising Temperature.sql

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SELECT DISTINCT a.Id
2+
FROM Weather AS a,
3+
Weather AS b
4+
WHERE a.temperature > b.temperature
5+
AND DATEDIFF(a.recordDate, b.recordDate) = 1;

SQL/Sales Analysis III.sql

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
SELECT p.product_id,
2+
p.product_name
3+
FROM product AS p JOIN sales AS s
4+
ON p.product_id = s.product_id
5+
GROUP BY s.product_id
6+
HAVING MIN(s.sale_date) >= '2019-01-01'
7+
AND MAX(s.sale_date) <= '2019-03-31';

SQL/Sales Person.sql

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
SELECT s.name
2+
FROM SalesPerson s
3+
WHERE s.sales_id NOT IN (
4+
SELECT o.sales_id
5+
FROM Orders o LEFT JOIN Company c
6+
ON o.com_id = c.com_id
7+
WHERE c.name = 'RED'
8+
);

SQL/Second Highest Salary.sql

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
SELECT (
2+
SELECT DISTINCT Salary
3+
FROM Employee
4+
ORDER BY Salary DESC
5+
LIMIT 1
6+
OFFSET 1
7+
) AS SecondHighestSalary;

SQL/Swap Salary.sql

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
UPDATE Salary
2+
SET sex = IF (sex = 'm', 'f', 'm');

SQL/The Latest Login in 2020.sql

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SELECT user_id,
2+
MAX(time_stamp) AS last_stamp
3+
FROM Logins
4+
WHERE YEAR(time_stamp) = 2020
5+
GROUP BY user_id;

SQL/Top Travellers.sql

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT name,
2+
COALESCE(SUM(distance), 0) AS travelled_distance
3+
FROM Users u LEFT JOIN Rides r
4+
ON u.id = r.user_id
5+
GROUP BY user_id
6+
ORDER BY 2 DESC, 1;

SQL/Tree Node.sql

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
SELECT DISTINCT a.id,
2+
CASE
3+
WHEN a.p_id IS NULL THEN 'Root'
4+
WHEN b.id IS NULL THEN 'Leaf'
5+
ELSE 'Inner'
6+
END AS Type
7+
FROM Tree a LEFT JOIN Tree b
8+
ON a.id = b.p_id
9+
ORDER BY a.id;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SELECT activity_date as day,
2+
COUNT(DISTINCT user_id) as active_users
3+
FROM Activity
4+
WHERE DATEDIFF('2019-07-27', activity_date) < 30
5+
AND activity_date <= '2019-07-27'
6+
GROUP BY activity_date;
0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)