AI写的不用游标派发明细数量例子

2024-09-02 15:20

本文主要是介绍AI写的不用游标派发明细数量例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 需求:

请在sqlserver设计数据库表以及编写sql实现如下需求:有个课目奖金表,登记各课目奖金池; 一个班有36位学生,每人每课目成绩不同,按学号顺序,如果成绩在90-100之间奖励200块,80-89之间奖励100块,70-79之间奖励50,其他不奖励,要考虑奖金是否派完的情况,最好不要用游标实现。首先,学生表要有金额字段,先更新金额字段然后显示这个表内容和各课目奖金池剩余金额

其实这种需求在ERP/MES系统中很多地方都要用,比如CMI登记的是明细,但要需要合并发料,发料后要回写明细。

GPT给出用CTE递归实现的方案,值得学习:
创建测试表及数据:

-- 课目奖金池表
CREATE TABLE SubjectBonus (SubjectCode NVARCHAR(50) PRIMARY KEY,  -- 课目代码TotalBonus INT                         -- 总奖金池
);-- 学生表
CREATE TABLE Students (StudentID INT,                         -- 学号SubjectCode NVARCHAR(50),              -- 课目代码Score INT,                             -- 成绩RewardAmount INT,                      -- 奖励金额PRIMARY KEY (StudentID, SubjectCode)  -- 复合主键
);
-- 插入课目奖金池数据
INSERT INTO SubjectBonus (SubjectCode, TotalBonus)
VALUES ('Math', 10000), ('Science', 10000);  -- 假设每个课目的初始奖金池为 10000-- 插入学生成绩数据
INSERT INTO Students (StudentID, SubjectCode, Score)
VALUES
(1, 'Math', 95), (2, 'Math', 85), (3, 'Math', 75), -- Math 科目成绩
(1, 'Science', 88), (2, 'Science', 92), (3, 'Science', 70); -- Science 科目成绩

更新学生表中的奖励金额

-- 使用 CTE 计算每个学生的奖金,并插入到临时表
WITH OrderedStudents AS (SELECT StudentID,SubjectCode,Score,CASE WHEN Score BETWEEN 90 AND 100 THEN 200WHEN Score BETWEEN 80 AND 89 THEN 100WHEN Score BETWEEN 70 AND 79 THEN 50ELSE 0END AS PotentialReward,ROW_NUMBER() OVER(PARTITION BY SubjectCode ORDER BY StudentID) AS RowNumFROM Students
),
RewardCTE AS (-- 初始数据SELECT os.StudentID,os.SubjectCode,os.Score,os.PotentialReward,sb.TotalBonus AS RemainingBonus,os.RowNumFROM OrderedStudents osJOIN SubjectBonus sb ON os.SubjectCode = sb.SubjectCodeWHERE os.RowNum = 1UNION ALL-- 递归计算奖金SELECT os.StudentID,os.SubjectCode,os.Score,CASE WHEN r.RemainingBonus >= os.PotentialReward THEN os.PotentialRewardELSE r.RemainingBonusEND AS PotentialReward,r.RemainingBonus - CASE WHEN r.RemainingBonus >= os.PotentialReward THEN os.PotentialRewardELSE r.RemainingBonusEND AS RemainingBonus,os.RowNumFROM OrderedStudents osJOIN RewardCTE r ON os.SubjectCode = r.SubjectCode AND os.RowNum = r.RowNum + 1
)
-- 将 CTE 结果插入临时表
SELECT StudentID,SubjectCode,PotentialReward,RemainingBonus
INTO #TempRewards
FROM RewardCTE
WHERE RowNum = 1 OR EXISTS (SELECT 1 FROM RewardCTE subWHERE sub.SubjectCode = RewardCTE.SubjectCode AND sub.RowNum = RewardCTE.RowNum - 1
);-- 更新 Students 表中的 RewardAmount
UPDATE s
SET s.RewardAmount = tr.PotentialReward
FROM Students s
JOIN #TempRewards tr ON s.StudentID = tr.StudentID AND s.SubjectCode = tr.SubjectCode;-- 更新 SubjectBonus 表中的 TotalBonus
UPDATE sb
SET sb.TotalBonus = sb.TotalBonus - (SELECT SUM(s.RewardAmount)FROM Students sWHERE s.SubjectCode = sb.SubjectCode
)
FROM SubjectBonus sb;-- 显示更新后的学生表内容
SELECT StudentID, SubjectCode,Score, RewardAmount
FROM Students
ORDER BY SubjectCode,StudentID;-- 显示更新后的课目奖金池
SELECT SubjectCode, TotalBonus 
FROM SubjectBonus;-- 删除临时表
DROP TABLE #TempRewards;

这篇关于AI写的不用游标派发明细数量例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130331

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU