sql - 将字段更新为一对多关系字段总和
问题描述
我在现有表中添加了一个字段,现在我必须更新旧条目以获得正确的值。
UPDATE shift_job
SET elapsed_time = ROUND(EXTRACT(EPOCH FROM actual_end_time - actual_start_time)/60):
ALTER TABLE shift_worker ADD COLUMN actual_work_duration integer NULL;
UPDATE shift_worker
SET actual_work_duration = SUM(SELECT elapsed_time
FROM shift_job
WHERE shift_worker_id = shift_worker.id);
我计算了一项工作的 elapsed_time 并且效果很好。在尝试为工人计算实际工作持续时间时,我遇到了问题。我需要对 shift_worker.id = shift_job.shift_worker_id 的所有“elapsed_time”字段求和。
我怎样才能做到这一点?
解决方案
UPDATE shift_worker
SET actual_work_duration = (SELECT SUM(elapsed_time)
FROM shift_job
WHERE shift_worker_id = shift_worker.id);
推荐阅读
- node.js - 如何从 kubernetes 应用程序在 kubernetes 中正确运行作业
- mongodb - docker容器内的mongod进程如何允许来自外部的连接
- laravel - 发送电子邮件请求时如何更改默认的 Laravel 8 Fortify 已发送电子邮件?
- angular - ngrx 中的不可变状态有问题
- java - 使用 switch 语句时如何将用户返回到主菜单?爪哇
- c# - 在 C# 中将 SQL 转换为 LINQ
- reactjs - 如何在 React 中单击输入时清除文本区域?
- flutter - 我如何实时查看下拉按钮
- html - 更改其选择器正在使用的组件的样式
- node.js - findOneAndModify Mongoose 方法已被弃用但不是真的