波仔发财 2023-03-17 10:01 采纳率: 66.7%
浏览 102
已结题

SQLserver查询

问题描述,一句sql查询下图中所有字段信息。

预计完成时间查询说明:
通过前5块组件的生产时间计算出它们每一块的平均时间,每10块组件计算一次平均时间。

img

  • 写回答

6条回答 默认 最新

  • 关注

    基于最新版ChatGPT4的回答,望采纳!!!有其他问题也可以询问我哦、”(最新版更智能,功能更加强大)

    假设我们有一个名为 orders 的数据表,其结构如下:

    1. order_id (工单号)
    2. order_quantity (工单数量)
    3. engineer (工程师)
    4. production_start_time (工单投产时间)
    5. production_progress (生产进度)
    6. duration (工单历时)
    7. estimated_completion_time (预计完成时间)

    以下是一个查询示例:

    WITH order_avg_time AS (
        SELECT
            order_id,
            order_quantity,
            engineer,
            production_start_time,
            production_progress,
            duration,
            SUM(duration) OVER (PARTITION BY engineer ORDER BY production_start_time ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) / 5.0 AS avg_time
        FROM
            orders
    ),
    order_avg_time_every_10 AS (
        SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY engineer ORDER BY production_start_time) AS row_num
        FROM
            order_avg_time
    )
    UPDATE orders
    SET estimated_completion_time = new_estimated_completion_time.new_value
    FROM (
        SELECT
            order_avg_time_every_10.order_id,
            CASE
                WHEN row_num % 10 = 0 THEN avg_time * (order_quantity - production_progress)
                ELSE estimated_completion_time
            END AS new_value
        FROM
            order_avg_time_every_10
    ) AS new_estimated_completion_time
    WHERE
        orders.order_id = new_estimated_completion_time.order_id;
    

    这个查询首先使用一个名为 order_avg_time 的CTE (公共表表达式) 计算每个工程师的前5块组件的生产时间平均值。然后,它使用名为 order_avg_time_every_10 的第二个CTE 为每个工程师的工单添加一个行号。

    接下来,查询更新 orders 表的 estimated_completion_time 字段。当行号(row_num)是10的倍数时,将平均时间乘以剩余的组件数量(order_quantity - production_progress)以计算新的预计完成时间。在其他情况下,保持 estimated_completion_time 字段的当前值不变。

    请注意,此查询将更新表中的 estimated_completion_time 字段,而不是仅在查询结果中显示新值。根据您的需求,这可能是您要执行的操作。如果您只希望在查询结果中查看预计完成时间而不更新表,请使用SELECT语句替换UPDATE语句。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月17日
  • 已采纳回答 3月17日
  • 修改了问题 3月17日
  • 创建了问题 3月17日

悬赏问题

  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题