sql-server - 如何根据一列的累计和进行查询?
问题描述
所以假设我有下表:
现在假设查询是:
SELECT
JobNo,
WorkCenter,
EstimMinutes
FROM Schedule
WHERE WorkCenter = 'Grinding'
现在假设 Grinding 的每日产能是每天 500 分钟,所以如果我要给他们一份当天的日程安排,我只想显示超过 500 分钟标记的作业。因此,在这种情况下,我只想返回以绿色突出显示的行,总共估计为 505 分钟。我该怎么做呢?
我试着做:
WHERE SUM(EstimMinutes) < 500
但这显然行不通。不太确定是否可以这样做,如果可以,我应该朝哪个方向前进。非常感谢任何帮助
解决方案
我会建议你一个基于公用表表达式的解决方案:
WITH CTE AS (
SELECT
JobNo,
WorkCenter,
EstimMinutes,
SUM(EstimMinutes) OVER (PARTITION BY WorkCenter
ORDER BY JobNo) AS CumulatedMinutes
FROM Schedule
WHERE WorkCenter = 'Grinding')
SELECT *
FROM CTE
WHERE CumulatedMinutes < 500;
推荐阅读
- node.js - 如何避免在 Discord 服务器中出现多个机器人实例
- python - Pandas MultiIndex 操作是否有 Spark 等效项,如 set_index() 或 unstack()?
- google-analytics - 如何衡量/跟踪内部链接、博客到主网站的访问?
- c - 如何解决 PWN 挑战?
- node.js - 使用聚合填充嵌套字段
- xml - 如何使用powershell从带有soap标头的xml文件中提取值
- django - Django将外键字段添加到generic.CreateView
- php - 如何将 PHP 与 JSON 类型标头连接起来
- c - C 编程:移动平均滤波器
- python - Azure 构建将 mongo_client.py 中的主机修改为 localhost