sql - 如何获取第一次记录后发生的任何更改值的emp id
问题描述
我有 emp 表,它包含许多 colmuns 并且员工可以在他/她的记录发生更改的旁边有很多行。它没有主键,因为 emp id 可以
在员工值旁边重复。
有一个列"health"
,它描述了健康状况,with values(heart,skin,null) etc..
并且modification_date
对于健康列中的值的每次更改,假设 1 号员工有心脏问题,因为在健康列中注册了第一条记录,然后员工康复了,然后添加了第二行和列健康=null ,
有时员工会因另一种疾病“皮肤”而生病
如果值变为空或其他值,如果他/她的列(健康)已更改为任何健康值,如何获取员工编号?
请问有什么帮助吗?
select empid, health_status from
(
select e.emp_id empid, e.health health_status,
count(e.health) over (partition by e.emp_id order by e.modification_date asc) sick_count
from emp e
)
where sick_count > 1
解决方案
似乎您需要计算NULL
s 和NOT-NULL
s。NVL2()
函数很适合计算这个,例如
SELECT e.emp_id, e.health,
SUM(NVL2(health,1,0)) OVER (PARTITION BY e.emp_id) AS "Sick",
SUM(NVL2(health,0,1)) OVER (PARTITION BY e.emp_id) AS "Got well"
FROM emp e
如果健康是NOT-NULL
第二个参数将返回,否则第三个参数将返回。顺便说一句,使用ORDER BY
子句将是多余的。
推荐阅读
- r - 我想在同一个 ggplot 中绘制多个值
- java - 在 JAXB 中解组期间忽略未定义的元素引用
- tableau-api - 在 Tableau Server 下搜索数据为空白
- python - 从熊猫读取csv时如何删除双引号?
- java - 连续两次检查相同的元音
- ios - 无法在 ios 上运行 ionic,错误来自 cordova 本身
- python - 神经网络的网格搜索超参数 (Keras)
- mongodb - 如何在 Spring Boot 中从 Mongodb 读取集合数据并定期发布到 kafka 主题中
- woocommerce - 删除 woocommerce 帐户详细信息中的“显示名称”字段
- python - 如何在 Python API 发布请求的“文件体”中指定文件?