oracle - 编写一个 PL/SQL 块来确定服务时间最长的员工在一周中的哪个时间段(工作日或周末)开始工作
问题描述
编写一个 PL/SQL 块来确定服务时间最长的员工在一周中的哪个时间段(工作日或周末)开始工作
解决方案
如果我不得不猜测,我会说这是工作日,因为绝大多数员工不会在周末上班。我不认为我认识一个人的第一个工作日是周六或周日。
无论如何:根据 Scott 的EMP
表格,数据如下所示(日期格式为dd.mm.yyyy
):
SQL> select ename, hiredate from emp order by hiredate;
ENAME HIREDATE
---------- ----------
SMITH 17.12.1980 --> that's the one who was the first employee
ALLEN 20.02.1981
WARD 22.02.1981
JONES 02.04.1981
BLAKE 01.05.1981
CLARK 09.06.1981
TURNER 08.09.1981
MARTIN 28.09.1981
KING 17.11.1981
JAMES 03.12.1981
FORD 03.12.1981
MILLER 23.01.1982
SCOTT 09.12.1982
ADAMS 12.01.1983
14 rows selected.
longest
CTE 找到最小值并使用英语将其hiredate
“转换”为日期名称(以便我以后可以使用它)。最后的查询只是检查那一天是什么并显示结果。
SQL> with longest as
2 (select min(hiredate) min_hiredate,
3 to_char(min(hiredate), 'dy', 'nls_date_language=english') day
4 from emp
5 )
6 select min_hiredate,
7 day,
8 case when day in ('sat', 'sun') then 'weekend'
9 else 'weekday'
10 end result
11 from longest;
MIN_HIREDA DAY RESULT
---------- ------------ ----------
17.12.1980 wed weekday
SQL>
这是 - 显然 - SQL。现在您知道了如何将其转录为 PL/SQL。
推荐阅读
- c - C - const 问题 - 错误:初始化元素不是常量
- spring-webflux - 如何处理reactor-netty终止spring-webflux中的请求?
- sql - 一个表中日期范围之间的 SQL SUM
- python - ParseError:在 Python 中解析 XML 文件时未定义的实体
- php - 如何避免 symfony 4 中的多个用户会话?
- ignite - 尝试从本地计算机连接到 ignite 缓存时发生 IgniteSpiException
- python - 从字符串初始化日期时间
- angular - 错误 TS2440 (TS) 导入声明与“PluginConfig”的本地声明冲突
- json - 如何修复错误“_InternalLinkedHashMap”不是“字符串”类型的子类型
- oracle - 在 For 循环两次 Oracle 中访问值