根据消费定额生成菜单的算法(原创)
在去年一个实验性项目中有这样一个问题,饭店根据顾客消费意愿进行菜单自动生成,如:699元套餐、899元套餐等。菜品类型有凉菜、热菜、蒸菜等等,具体需求不详细描述。关键是一个根据消费金额自动生成菜单的算法。可惜当时的代码找不到了。
今天在论坛中又遇到一个类似问题,正好可用以回顾。如下:
表结构:
Table created
Executed in 0.468 seconds
插入数据:
SQL> insert into t_money values(1,2);
1 row inserted
Executed in 0 seconds
SQL> insert into t_money values(2,2);
1 row inserted
Executed in 0 seconds
SQL> insert into t_money values(3,3);
1 row inserted
Executed in 0 seconds
SQL> insert into t_money values(4,5);
1 row inserted
Executed in 0 seconds
SQL> insert into t_money values(5,2);
1 row inserted
Executed in 0.016 seconds
SQL> insert into t_money values(6,8);
1 row inserted
Executed in 0.016 seconds
SQL> insert into t_money values(7,1);
1 row inserted
Executed in 0 seconds
SQL> insert into t_money values(8,2);
1 row inserted
Executed in 0 seconds
SQL> insert into t_money values(9,3);
1 row inserted
Executed in 0 seconds
SQL> insert into t_money values(10,3);
1 row inserted
Executed in 0 seconds
SQL> select substr(id,1,3) id,substr(amount,1,3) amount from t_money;
ID AMOUNT
------ ------
1 2
2 2
3 3
4 5
5 2
6 8
7 1
8 2
9 3
10 3
10 rows selected
Executed in 0.156 seconds
问题是:
从表中选取若干条数据,使得被选出来的几条数据的amount(金额)字段之和等于10,要求存储过程能返回被选取出来的数据的序列号。 举例:2+3+5=10 返回序列号:1,3,4
存储过程代码:
create or replace procedure P_test(O_str out varchar2)exp user1/pwd@server owner=user1 file=c:\file.dmp
imp user2/pwd@server fromuser=user1 touser=user2 file=c:\file.dmp
as
v_str varchar2(20):=',';
v_id number;
v_count number;
v_tmp number :=0;
v_money number :=0;
begin
select count(0) into v_count from t_money;
loop
select count(0) into v_count from t_money where not instr(v_str,',' || id || ',')>0 and amount <= 10-v_money;
if v_count = 0 then
exit;
-- or restart
end if;
select id,amount into v_id,v_tmp from
(select id,amount from t_money where not instr(v_str,',' || id || ',')>0 and amount <= 10-v_money order by dbms_random.value)
where rownum <2;
v_money := v_money + v_tmp;
v_str := v_str || v_id ||',';
exit when v_money =10;
end loop;
O_str := v_str;
-- Error
end;
结果:,7,9,10,3,
转载于:https://www.cnblogs.com/fyonline/archive/2009/08/26/1554178.html
根据消费定额生成菜单的算法(原创)相关推荐
- [Qt] 迷宫随机生成和自动寻路算法、布局管理器、动态效果、界面切换、播放音频【迷宫、魔塔、超级玛丽】 -C++课程设计:Qt实现的迷宫与地牢游戏
基于QT的迷宫与地牢小游戏开发 首先贴出链接: 完整Qt源码:点击进入https://download.csdn.net/download/qq_43365825/11852112 发布可执行程序:点 ...
- Menu详解(二):利用XML生成菜单和子菜单
前言:上篇,我们说了有关代码生成菜单和子菜单的方法,这里我们再讲讲有关利用XML生成菜单和子菜单的问题. 业精于勤,荒于嬉,行成于思,毁于随 (日拱一卒) 系列文章: 1.<Menu详解(一): ...
- python如何生成excel文件_[原创] 如何用python3自动随机生成Excel文件内容
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先来看效果图 文件命名 文件内容 代码说明如下 import xlrd import xlwt from my_framework.log import ...
- 微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇)
1.点评 对于IM系统来说,如何做到IM聊天消息离线差异拉取(差异拉取是为了节省流量).消息多端同步.消息顺序保证等,是典型的IM技术难点. 就像即时通讯网整理的以下IM开发干货系列一样: <I ...
- Django 权限管理-后台根据用户权限动态生成菜单
Django权限管理 实现目标: 1.管理用户,添加角色,用户关联角色 2.添加权限.角色关联权限 3.添加动作.权限关联动作 4.添加菜单.权限关联菜单 实现动态生成用户权限菜单(可设置多级菜单嵌套 ...
- 封装各种生成唯一性ID算法的工具类
/*** Copyright (c) 2005-2012 springside.org.cn** Licensed under the Apache License, Version 2.0 (the ...
- php制作随机地图,随机生成Roguelike游戏地图算法
www.roguebasin.com 有很多相关的roguelike资料 相当有价值 首先随机生成一套地图世界有几个概念. 数据结构 1.world 2.map 3.room 4.corridor 地 ...
- TC字符界面-菜单程序【原创】
TC字符界面-菜单程序[原创] 2008/03/06 22:58 /*本程序代码属本人原创,未经允许不得转载,谢谢合作 作者:HungryAnt 发布时间:2008-3-6 */ /*快捷键功能没有提 ...
- 把数字随机分成 php,php随机数 微信随机生成红包金额算法php版
最近在研究发红包的功能,于是写了个红包的生成算法. 红包生成算法的需求 预先生成所有的红包还是一个请求随机生成一个红包 简单来说,就是把一个大整数m分解(直接以"分为单位,如1元即100)分 ...
- mysql的列生成下拉_ComboBox读取数据库生成下拉列表的算法简化
一个VB 的优化案例 关劲松 PMP 关于测试软件,ComboBox读取数据库生成下拉列表的算法简化. 原有代码: 要遍历整个表的数据.使用了两次嵌套循环,加if判断,加标志位处理.而且代码繁复,不易 ...
最新文章
- XamarinAndroid组件教程设置自定义子元素动画(一)
- NASM中SECTION的概念
- 实验室服务器18.04LTS+RTX2080Ti+CUDA10.0+CUDAnn7.4+tf1.13装机之路
- java长连接socket【转】http://jiewo.iteye.com/blog/1562168
- 【ZOJ - 2972】Hurdles of 110m (dp)
- Win7平台下配置Sublime Text2 的C++编译环境
- 普通摄像头游戏——空中飞车
- 计算机金融sci,FINANCE AND STOCHASTICS《金融与随机分析》SSCI论文投稿_SSCI期刊大全_SSCI期刊点评_万维书刊网...
- centos7 部署dzzoffice最新版详细教程
- Greasy Fork 视频网页全屏脚本
- js清除网页广告代码
- 口算题自动生成小工具
- java 中文词性标注_使用opennlp进行词性标注
- CVPR 2021 Oral | Transformer再发力!华南理工和微信提出UP-DETR:无监督预训练检测器...
- vim中,c/cpp文件如何在头文件和.c/.cpp文件中快速的进行跳转
- part1:推荐一些适合练手、课程设计、毕业设计的python小项目源码,无任何下载门槛
- Ubuntu 18.04.x LTS及以上版本设置链路聚合网络
- cherry蓝牙键盘如何锁定win键
- 多轴机器人简图_串联机器人的基本结构形式、结构简图和工作空间
- php xml expat,php 使用expat方式解析xml文件操作示例