这道题目要求我们从员工表中查找出员工编号为奇数且姓氏不为“Mary”的员工信息,我们要做的事情如下:

1. 确定总体问题

我们需要从员工表中提取数据,应用条件过滤和排序,并按入职日期降序排列。

2. 分析关键问题

  • 筛选奇数编号的员工:使用条件过滤筛选出员工编号为奇数的员工。
  • 排除姓氏为“Mary”的员工:使用条件过滤排除姓氏为“Mary”的员工。
  • 排序输出:按入职日期降序排列输出结果。

3. 解决每个关键问题的代码及讲解

步骤1:筛选奇数编号的员工

我们使用WHERE子句筛选出员工编号为奇数的员工:

where 
    emp_no%2=1
  • emp_no % 2 = 1:筛选出员工编号为奇数的员工:对二取模的余数为一即为奇数。
步骤2:排除姓氏为“Mary”的员工

我们在WHERE子句中排除姓氏为“Mary”的员工:

and last_name != 'Mary'
  • last_name != 'Mary':排除姓氏为“Mary”的员工(也可以使用not like)。
步骤3:排序输出

我们使用ORDER BY按入职日期降序排列输出结果:

order by 
    hire_date desc
  • ORDER BY hire_date DESC:按入职日期降序排列。

完整代码

select
    emp_no,
    birth_date,
    first_name,
    last_name,
    gender,
    hire_date
from
    employees
where 
    emp_no%2=1 and last_name != 'Mary'
order by 
    hire_date desc;