目录
1 找出合作过至少三次的演员和导演的 id 对(actor_id, director_id)
2 获取 Sales 表中所有 sale_id 对应的 product_name 以及该产品的所有 year 和 price 。
3 查询每一个项目中员工的 平均 工作年限,精确到小数点后两位。
4 报告2019年春季才售出的产品。即仅在2019-01-01至2019-03-31(含)之间出售的商品。
6统计截至 2019-07-27(包含2019-07-27),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)
8 case 行转列 使得 每个月 都有一个部门 id 列和一个收入列
9找出每次的 query_name 、 quality 和 poor_query_percentage。
1 找出合作过至少三次的演员和导演的 id 对(actor_id, director_id)
示例 :
输入:
ActorDirector 表:
+-------------+-------------+-------------+
| actor_id | director_id | timestamp |
+-------------+-------------+-------------+
| 1 | 1 | 0 |
| 1 | 1 | 1 |
| 1 | 1 | 2 |
| 1 | 2 | 3 |
| 1 | 2 | 4 |
| 2 | 1 | 5 |
| 2 | 1 | 6 |
+-------------+-------------+-------------+
输出:
+-------------+-------------+
| actor_id | director_id |
+-------------+-------------+
| 1 | 1 |
+-------------+-------------+
解释:
唯一的 id 对是 (1, 1),他们恰好合作了 3 次。
sql:
select actor_id,director_id
from ActorDirector
group by actor_id,director_id
having count(*)>=3
2 获取 Sales
表中所有 sale_id
对应的 product_name
以及该产品的所有 year
和 price
。
示例 1:
输入:Sales表:
+---------+------------+------+----------+-------+ | sale_id | product_id | year | quantity | price | +---------+------------+------+----------+-------+ | 1 | 100 | 2008 | 10 | 5000 | | 2 | 100 | 2009 | 12 | 5000 | | 7 | 200 | 2011 | 15 | 9000 | +---------+------------+------+----------+-------+
Product表:
+------------+--------------+ | product_id | product_name | +------------+--------------+ | 100 | Nokia | | 200 | Apple | | 300 | Samsung | +------------+--------------+
输出:
+--------------+-------+-------+ | product_name | year | price | +--------------+-------+-------+ | Nokia | 2008 | 5000 | | Nokia | 2009 | 5000 | | Apple | 2011 | 9000 | +--------------+-------+-------+
sql:
select product_name,year,price
from Sales
left join Product
on Sales.product_id=Product.product_id
3 查询每一个项目中员工的 平均 工作年限,精确到小数点后两位。
查询结果的格式如下:
Project 表: +-------------+-------------+ | project_id | employee_id | +-------------+-------------+ | 1 | 1 | | 1 | 2 | | 1 | 3 | | 2 | 1 | | 2 | 4 | +-------------+-------------+ Employee 表: +-------------+--------+------------------+ | employee_id | name | experience_years | +-------------+--------+------------------+ | 1 | Khaled | 3 | | 2 | Ali | 2 | | 3 | John | 1 | | 4 | Doe | 2 | +-------------+--------+------------------+ Result 表: +-------------+---------------+ | project_id | average_years | +-------------+---------------+ | 1 | 2.00 | | 2 | 2.50 | +-------------+---------------+ 第一个项目中,员工的平均工作年限是 (3 + 2 + 1) / 3 = 2.00;第二个项目中,员工的平均工作年限是 (3 + 2) / 2 = 2.50
sql 1:
select project_id,round(avg(experience_years),2) average_years
from Employee left join Project on Employee.employee_id = Project.employee_id
where Employee.employee_id and Project.project_id is not null
group by Project.project_id;
sql 2:
SELECT project_id,round(avg(experience_years),2) average_years
FROM Project p
JOIN Employee e
ON p.employee_id = e.employee_id
GROUP