我们需要统计每个员工的薪水记录次数,并筛选出记录次数超过15次的员工。我们要做的事情如下:
1. 确定总体问题
这道题目要求我们查找出在薪水记录中,记录次数超过15次的员工编号及其对应的记录次数。我们需要从薪水表中提取数据,统计每个员工的薪水记录次数,并筛选出记录次数超过15次的员工
2. 分析关键问题
- 统计薪水记录次数:对每个员工的薪水记录进行计数。
- 筛选记录次数超过15次的员工:找出记录次数大于15的员工。
3. 解决每个关键问题的代码及讲解
步骤1:统计薪水记录次数
我们在子查询中使用COUNT
函数对每个员工的薪水记录进行计数,并按员工编号分组:
select
emp_no,
count(*) as t
from
salaries
group by
emp_no
COUNT(*) AS t
:计算每个员工的薪水记录次数。GROUP BY emp_no
:按员工编号分组。
步骤2:筛选记录次数超过15次的员工
我们在外层查询中筛选出记录次数大于15的员工:
select
emp_no,
t
from
(
--子查询
) s
where
t > 15
WHERE t > 15
:筛选出记录次数超过15次的员工。
完整代码
select
emp_no,
t
from
(
select
emp_no,
count(*) as t
from
salaries
group by
emp_no
) s
where
t > 15;