现在有一个生产计划,甲乙丙3个品类共16个产品,生产时间6天,每天甲品类可以生产1张单,乙3张,丙1张,请用MySQL写出H列的效果

现在有一个生产计划,甲乙丙3个品类共16个产品,生产时间6天,每天甲品类可以生产1张单,乙3张,丙1张,请用MySQL写出H列的效果吗?
在这里插入图片描述

最终展示结果要求为:

品类产品生产时间开始生产时间结束该品类每天可排单数量参照排产日期
甲12024-07-152024-07-2012024-07-15
甲22024-07-152024-07-2012024-07-16
乙12024-07-152024-07-2032024-07-15
乙22024-07-152024-07-2032024-07-15
乙32024-07-152024-07-2032024-07-15
乙42024-07-152024-07-2032024-07-16
乙52024-07-152024-07-2032024-07-16
乙62024-07-152024-07-2032024-07-16
乙72024-07-152024-07-2032024-07-17
乙82024-07-152024-07-2032024-07-17
丙12024-07-152024-07-2012024-07-15
丙22024-07-152024-07-2012024-07-16
丙32024-07-152024-07-2012024-07-17
丙42024-07-152024-07-2012024-07-18
丙52024-07-152024-07-2012024-07-19
丙62024-07-152024-07-2012024-07-20

解决办法:

1、进行数据拆解:

品类产品生产时间开始生产时间结束该品类每天可排单数量
甲12024-07-152024-07-201
甲22024-07-152024-07-201
乙12024-07-152024-07-203
乙22024-07-152024-07-203
乙32024-07-152024-07-203
乙42024-07-152024-07-203
乙52024-07-152024-07-203
乙62024-07-152024-07-203
乙72024-07-152024-07-203
乙82024-07-152024-07-203
丙12024-07-152024-07-201
丙22024-07-152024-07-201
丙32024-07-152024-07-201
丙42024-07-152024-07-201
丙52024-07-152024-07-201
丙62024-07-152024-07-201
-- 创建表
CREATE TABLE produces (`品类/产品` VARCHAR(10),`生产时间(开始)` DATE,`生产时间(结束)` DATE,`该品类每天可排单数量` INT
);-- 插入数据
INSERT INTO produces (`品类/产品`, `生产时间(开始)`, `生产时间(结束)`, `该品类每天可排单数量`) VALUES
('甲1', '2024-07-15', '2024-07-20', 1),
('甲2', '2024-07-15', '2024-07-20', 1),
('乙1', '2024-07-15', '2024-07-20', 3),
('乙2', '2024-07-15', '2024-07-20', 3),
('乙3', '2024-07-15', '2024-07-20', 3),
('乙4', '2024-07-15', '2024-07-20', 3),
('乙5', '2024-07-15', '2024-07-20', 3),
('乙6', '2024-07-15', '2024-07-20', 3),
('乙7', '2024-07-15', '2024-07-20', 3),
('乙8', '2024-07-15', '2024-07-20', 3),
('丙1', '2024-07-15', '2024-07-20', 1),
('丙2', '2024-07-15', '2024-07-20', 1),
('丙3', '2024-07-15', '2024-07-20', 1),
('丙4', '2024-07-15', '2024-07-20', 1),
('丙5', '2024-07-15', '2024-07-20', 1),
('丙6', '2024-07-15', '2024-07-20', 1);-- 确认数据插入
SELECT * FROM produces;

最终SQL:

-- 使用WITH子句创建CTE
WITH scheduled_producet AS (SELECT 品类产品, 生产时间开始, 生产时间结束, 该品类每天可排单数量,DATE_ADD(生产时间开始, INTERVAL FLOOR((@row_num := IF(@current_category = SUBSTRING(品类产品, 1, 1), @row_num + 1, 0)) / 该品类每天可排单数量) DAY) AS 参照排产日期,@current_category := SUBSTRING(品类产品, 1, 1) AS dummy,@row_order := @row_order + 1 AS row_orderFROM produces, (SELECT @row_num := -1, @current_category := '', @row_order := 0) AS varsORDER BY row_order
)-- 查询CTE
SELECT 品类产品, 生产时间开始, 生产时间结束, 该品类每天可排单数量, 参照排产日期
FROM scheduled_producet
ORDER BY row_order;

在这里插入图片描述

完美解决!跟想要的效果一模一样!!!

品类产品生产时间开始生产时间结束该品类每天可排单数量参照排产日期
甲12024-07-152024-07-2012024-07-15
甲22024-07-152024-07-2012024-07-16
乙12024-07-152024-07-2032024-07-15
乙22024-07-152024-07-2032024-07-15
乙32024-07-152024-07-2032024-07-15
乙42024-07-152024-07-2032024-07-16
乙52024-07-152024-07-2032024-07-16
乙62024-07-152024-07-2032024-07-16
乙72024-07-152024-07-2032024-07-17
乙82024-07-152024-07-2032024-07-17
丙12024-07-152024-07-2012024-07-15
丙22024-07-152024-07-2012024-07-16
丙32024-07-152024-07-2012024-07-17
丙42024-07-152024-07-2012024-07-18
丙52024-07-152024-07-2012024-07-19
丙62024-07-152024-07-2012024-07-20

(看不懂的上面SQL的,可以看下面的注释)

注释:

-- 使用WITH子句创建CTE
WITH scheduled_producet AS (-- 这是一个CTE(公用表表达式)的定义开始,它将被命名为`scheduled_producet`。SELECT 品类产品, 生产时间开始, 生产时间结束, 该品类每天可排单数量,-- 选择所需的列。DATE_ADD(生产时间开始, INTERVAL FLOOR((@row_num := IF(@current_category = SUBSTRING(品类产品, 1, 1), @row_num + 1, 0)) / 该品类每天可排单数量) DAY) AS 参照排产日期,-- 这行代码使用DATE_ADD函数和INTERVAL来计算参照排产日期。-- FLOOR函数向下取整,用于确定在给定的每天可排单数量下,需要多少天来安排生产。-- @row_num是一个用户定义的变量,用来追踪当前产品类别的行号。-- IF函数检查当前的产品类别是否与上一个相同,如果是,则@row_num增加,否则重置为0。-- 参照排产日期是基于生产时间开始和行号计算的。@current_category := SUBSTRING(品类产品, 1, 1) AS dummy,-- 这行代码设置一个用户定义的变量@current_category为当前产品的类别首字母。-- 'dummy'是一个别名,通常用于不需要的SELECT列,但在这里它用于设置变量。@row_order := @row_order + 1 AS row_order-- 这行代码定义了一个用户定义的变量@row_order,用来为每一行分配一个顺序编号。FROM produces, -- 从`produces`表中选择数据。(SELECT @row_num := -1, @current_category := '', @row_order := 0) AS vars-- 这是一个子查询,用于初始化用户定义的变量。ORDER BY row_order-- 根据行号对结果进行排序。
)-- 查询CTE
SELECT 品类产品, 生产时间开始, 生产时间结束, 该品类每天可排单数量, 参照排产日期
FROM scheduled_producet
-- 从CTE `scheduled_producet`中选择数据。ORDER BY row_order;
-- 根据行号对查询结果进行排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android开机动画压缩包zip,自制开机动画(基于Android10.0.0-r41)

文章目录 Android开机动画压缩包zip,自制开机动画1.Android加载压缩包原理2.自制开机动画 Android开机动画压缩包zip,自制开机动画 1.Android加载压缩包原理 这里有个md文件我们看下 核心部分, 首先要创建一个文件叫做desc.txt,这是规定的…

【AI】你要的U-KAN来了

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 U-KAN来了,快是真的快的,上个月才出的KAN,不得不说快。 先占个坑,有时间细看。 下面放上摘要 1. 正文 …

Django 外键关联数据

在设计数据库的时候,是得需要通过外键的形式将各个表进行连接。 原先的表是这样的 要想更改成这样: 下面是操作步骤: 有两张表是关联的 # 在 models.py 里创建class Department(models.Model):"""部门表""&quo…

基于Arduino的简易磁悬浮装置原理图和源代码分享

磁悬浮装置原理 大家可能都玩过这种磁悬浮玩具,它们的工作原理与此类似。 首先,让我们了解一下这个原理,其实非常简单。它主要依赖于磁力对悬浮物体的控制。基本原理如下:在浮子的正下方放置一个霍尔传感器。当传感器检测到浮子向…

Android Compose 十:常用组件列表 监听

1 去掉超出滑动区域时的拖拽的阴影 即 overScrollMode 代码如下 CompositionLocalProvider(LocalOverscrollConfiguration provides null) {LazyColumn() {items(list, key {list.indexOf(it)}){Row(Modifier.animateItemPlacement(tween(durationMillis 250))) {Text(text…

七天进阶elasticsearch[one]

elasticSearch 概述 Elasticsearch是一个近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个很小的延迟(通常是一秒) 集群 一个集群就是由一个或多个节点组织在一起, 它们共同持有你全部的数据&#x…

【第8章】SpringBoot实战篇之文章分类(上)

文章目录 前言一、后端代码1. CategoryController2. service3. CategoryMapper4. Category 二、测试1. 失败(校验)2.正常 总结 前言 从这开始进入文章相关的接口开发,本章主要介绍定义文章分类接口和新增文章分类 建表语句和测试用例,在SpringBoot专栏首…

pyspark中使用mysql jdbc报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决

报错信息: py4j.protocol.Py4JJavaError: An error occurred while calling o33.load. : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 我的解决方法: 这个报错就是提示你找不到jar包,所以你需要去下载一个和你mysql版本匹配的j…

智慧园区智能化系统整体解决方案(111页PPT)

方案介绍: 智慧园区智能化系统整体解决方案是一个综合性的管理平台,它通过集成视频、报警、园区一卡通、产线管理、能耗管理、公共广播、信息发布等多种系统,实现园区的全方位智能化管理。该系统以基础管理平台为系统基础,提供系…

实验五、IPv4地址的子网划分,第1部分《计算机网络》

但凡你有点本事,也不至于一点本事都没有。 目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 完成本练习之后,您应该能够确定给定 IP 地址和网络掩码 的网络信息。本练习旨在让您掌握如何根据给定 IP 地址计算网络 IP 地址信息。 二、实验…

VBA发送邮件的常用方法?VBA如何自动发信?

VBA发送邮件需要配置什么设置?怎么使用VBA发送邮件? 使用VBA自动化处理任务是非常常见的,尤其是在发送邮件方面。通过VBA发送邮件,不仅可以提高工作效率,还能减少人为操作的错误。AokSend将详细介绍VBA发送邮件的常用…

MBR10100FCT-ASEMI肖特基二极管MBR10100FCT

编辑:ll MBR10100FCT-ASEMI肖特基二极管MBR10100FCT 型号:MBR10100FCT 品牌:ASEMI 封装:TO-220F 最大平均正向电流(IF):10A 最大循环峰值反向电压(VRRM)&#xff1…

新风口还是割韭菜?全域外卖加盟究竟真是假?

随着全域外卖加盟模式的兴起,与之相关的骗局不断增多,并由此引发了外界对于全域外卖加盟模式真实性的质疑,全域外卖加盟是真的吗等相关问题更是一举成为全域外卖交流群中的热点话题。 事实上,就目前的情况而言,全域外卖…

数据资产运营平台解决方案

一、前言 数据资产管理运营平台是涵盖数据资产确权、登记、核验、质量评价、价值评估、定价、增值、入表、安全等全流程业务的数据要素市场基础设施。落实数据产业制度供给,构建数据要素市场,汇集数据资源供给服务,为数据要素流通交易提供平…

BERT应用——文本相似度计算

本文展示了如何利用BERT模型计算两个文本字符串之间的余弦相似度。BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的预训练模型,广泛应用于自然语言处理领域。BERT的核心创新在于其双向训练的机制…

Cartographer学习笔记

Cartographer 是一个跨多个平台和传感器配置提供 2D 和 3D 实时同步定位和地图绘制 (SLAM) 的系统。 1. 文件关系 2. 代码框架 common: 定义了基本数据结构和一些工具的使用接口。例如,四舍五入取整的函数、时间转化相关的一些函数、数值计算的函数、互斥锁工具等…

【必会面试题】快照读的原理

目录 前言知识点一个例子 前言 快照读(Snapshot Read)是数据库管理系统中一种特殊的读取机制,主要用于实现多版本并发控制(MVCC, Multi-Version Concurrency Control)策略,尤其是在MySQL的InnoDB存储引擎中…

特征优化+模型优化

一、优化思路梳理 课前准备   在昨天的内容中,我们通过使用更强的集成模型以及模型融合的方法,已经顺利将比赛分数提高至前20%。但正如此前所说,之前的一系列操作只不过是遵循了常规操作流程进行的数据处理与建模,若希望能够更进…

界面控件Telerik UI for WPF中文教程 - 用RadSvgImage升级应用程序UI

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio…

笔记-Python中的struct模块

了解c语言的人,一定会知道struct结构体在c语言中的作用,它定义了一种结构,里面包含不同类型的数据(int,char,bool等等),方便对某一结构对象进行处理。而在网络通信当中,大多传递的数据是以二进制流(binary …