sql 相关2

1.Employees Earning More Than Their Managers

+----+-------+--------+-----------+
| Id | Name  | Salary | ManagerId |
+----+-------+--------+-----------+
| 1  | Joe   | 70000  | 3         |
| 2  | Henry | 80000  | 4         |
| 3  | Sam   | 60000  | NULL      |
| 4  | Max   | 90000  | NULL      |
+----+-------+--------+-----------+

找出比mananger工资多的雇员

+----------+
| Employee |
+----------+
| Joe      |
+----------+

select a.Name as Employee  from Employee a join Employee b 
on a.ManagerId = b.Id where a.Salary > b.Salary 

2.Customers Who Never Order

查找没有购物的用户名字

Table: Customers.

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Joe   |
| 2  | Henry |
| 3  | Sam   |
| 4  | Max   |
+----+-------+
Table: Orders.

+----+------------+
| Id | CustomerId |
+----+------------+
| 1  | 3          |
| 2  | 1          |
+----+------------+
Using the above tables as example, return the following:

+-----------+
| Customers |
+-----------+
| Henry     |
| Max       |
+-----------+
select a.name as Customers from Customers a left join Orders b 
on a.id = b.CustomerId  where b.id is NULL

3.Delete Duplicate Emails

Write a SQL query to delete all duplicate email entries in a table 
named Person, keeping only unique emails based on its smallest Id.

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | [email protected] |
| 2  | [email protected]  |
| 3  | [email protected] |
+----+------------------+
Id is the primary key column for this table.
For example, after running your query, the above Person table 
should have the following rows:

+----+------------------+
| Id | Email            |
+----+------------------+
| 1  | [email protected] |
| 2  | [email protected]  |
+----+------------------+
DELETE FROM p1 USING Person p1 INNER JOIN Person p2 
WHERE p1.Email = p2.Email AND p1.Id > p2.Id
# delete by min
delete from Person where ID not in (
select * from (select MIN(ID) from Person group by Email) t
)

4.Rising Temperature


Given a Weather table, write a SQL query to find all dates' Ids with 
higher temperature compared to its previous (yesterday's) dates.

+---------+------------+------------------+
| Id(INT) | Date(DATE) | Temperature(INT) |
+---------+------------+------------------+
|       1 | 2015-01-01 |               10 |
|       2 | 2015-01-02 |               25 |
|       3 | 2015-01-03 |               20 |
|       4 | 2015-01-04 |               30 |
+---------+------------+------------------+
For example, return the following Ids for the above Weather table:
+----+
| Id |
+----+
|  2 |
|  4 |
+----+
#高TO_DAYS
SELECT w1.Id FROM Weather w1 INNER JOIN Weather w2 
ON TO_DAYS(w1.Date) = TO_DAYS(w2.Date) + 1 AND w1.Temperature > w2.Temperature

你可能感兴趣的:(sql 相关2)