案例1
已知信息
员工表 Employee
名称 | 类型 | 描述 |
---|---|---|
EmployeeId | Int | 员工id(唯一) |
Name | Varchar(50) | 员工姓名 |
Age | Int | 员工年龄 |
Varchar(50) | 员工邮箱 | |
Level | Int | 员工能级 |
工资表 salary
名称 | 类型 | 描述 |
---|---|---|
SalaryId | Int | 工资id(唯一) |
EmployeeId | Int | 员工id |
Money | Double | 工资金额 |
Date | Datetime | 发放日期 |
题目及解答
查询偶有员工的姓名和邮箱,并按照年龄降序、姓名升序排序。
select Name,Email
from Employee
order by Age desc,Name asc;
查询员工级别为1的所有员工的姓名及其对应的工资金额总和。
①select e.Name,sum(s.Money) as sumMoney
from Employee e
inner join Salary s
on e.EmployeeId = s.EmployeeId
where e.Level = 1
group by e.Name;
查询所有高于平均工资的工资发放信息以及对应的员工信息(发放日期、工资金额、员工id,员工姓名、员工年龄、员工邮箱、员工级别)
select s.Date,s.Money,s.EmployeeId,e.Name,e,Age,e.Email,e.Level
from Employee e
inner join Salary s
on e.EmployeeId = s.EmployeeId
where s.Money >(
select avg(Money)
from Salary
);
案例2
备注
from后面 子查询; DATE_ADD函数
DATE_ADD(date,interval expr type) = 向日期添加指定的时间间隔。
date = 合法的日期表达式、exper参数希望添加的时间间隔
type = microsecond、second、minute、hour、day、week、month、quarter、year、second_microsecond、minute_microsecond等。