mysql - MySQL 查询以了解计划合规性
问题描述
我有一个表Works,其中我得到了列start_date和end_date,它们是日期时间类型和qtty tinyint。为了涵盖这些作品,我得到了另一个名为Turns的表,它也有start_turn和end_turn两种日期时间类型。
需要为大于或等于qtty的人数(分配了轮次)覆盖作品,但轮次不一定需要从works.start_date到works.end_date。
我需要知道的是作品是否被正确覆盖,我的意思是,从start_date到end_date的作品是否总是被至少qtty人覆盖。
例如:案例 1
工作 =>开始日期 = 2018-07-01 10:00 | end_date = 2018-07-01 22:00 | qtty = 2
转 =>
人 A:start_turn = 2018-07-01 10:00 | end_turn = 2018-07-01 22:00
B 人:start_turn = 2018-07-01 10:00 | end_turn = 2018-07-01 16:00
C 人:start_turn = 2018-07-01 16:00 | end_turn = 2018-07-01 22:00
案例二
工作 =>开始日期 = 2018-07-01 10:00 | end_date = 2018-07-01 22:00 | qtty = 2
转 =>
人 A:start_turn = 2018-07-01 10:00 | end_turn = 2018-07-01 22:00
B 人:start_turn = 2018-07-01 16:00 | end_turn = 2018-07-01 22:00
C 人:start_turn = 2018-07-01 16:00 | end_turn = 2018-07-01 22:00
看到第一种情况,我们可以解决它,只需提取工作的分钟数乘以qtty,然后将该值与每轮分钟的总和进行比较,然后答案是肯定的,工作被正确覆盖。但是将这种方法应用于第二种情况,答案也是肯定的,但这是不正确的,因为从start_date到end_date至少有两个人的工作不包括在内。
我怎么能做到?任何帮助,将不胜感激。
编辑
这是正确的 SQL 小提琴:http ://sqlfiddle.com/#!9/c53d1b
解决方案
不是答案;太长的评论:
Case 1 : Qtty = 2
10 11 12 13 14 15 16 17 18 19 20 21 22
A |------------------------------------|
B |------------------|
C |-----------------|
Case 2 : Qtty = 2
10 11 12 13 14 15 16 17 18 19 20 21 22
A |------------------------------------|
B |-----------------|
C |-----------------|
案例2似乎满足了“这些作品不一定需要从works.start_date到works.end_date”的要求
推荐阅读
- c - 无法通过将指向数组的指针地址作为函数的参数传递来更改某些数组数据
- javascript - 输入范围 - 连同数量一起改变价格
- amazon-web-services - AWS NAT 网关不允许 EC2 连接到 Internet
- angular - Carousel 在 Angular 10 中不起作用:图像不会滑动
- r - 使用 for 循环将所有值从 2 乘到 10
- mysql - 除了 JOIN 创建 SQL 语法错误之外还有什么?BUT JOIN 使我的结果翻了两番
- javascript - React/Redux 我有两个组件我想使用 handleClick 将数据在一个状态中传递给另一个
- django - 提高 Django ORM 中的性能
- javascript - 循环比较字母的问题
- react-native - react-native zoom-bridge sdk在ios真实设备中构建不工作,但在模拟器中,它正在工作