根据消费定额生成菜单的算法(原创)
在去年一个实验性项目中有这样一个问题,饭店根据顾客消费意愿进行菜单自动生成,如:699元套餐、899元套餐等。菜品类型有凉菜、热菜、蒸菜等等,具体需求不详细描述。关键是一个根据消费金额自动生成菜单的算法。可惜当时的代码找不到了。
今天在论坛中又遇到一个类似问题,正好可用以回顾。如下:
表结构:
Table created
Executed in 0.468 seconds
插入数据:
![](/assets/blank.gif)
![](/assets/blank.gif)
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
![](/assets/blank.gif)
![](/assets/blank.gif)
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
存储过程代码:
![](/assets/blank.gif)
![](/assets/blank.gif)
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判断,加标志位处理.而且代码繁复,不易 ...
最新文章
- redis高级-内存淘汰策略
- golang之iota
- 数字信号处理学习笔记(三)|时域离散系统的网络结构
- ubuntu16定时任务crontab
- qduoj - 今晚一起打CF吧——Codeforces,十三亿人的ACM梦。(排序背包)
- prototype.js ajax.request,javascript – Prototype和Ajax.Request范围
- 互联网产品一网易网站设计(思想)
- iOS 推送 获取手机设备的 deviceToken
- python引入redis_实操演练解读非关系型数据库—Redis
- python中object类的源码在哪里-[Python之路] object类中的特殊方法
- 新增修改BP客户/供应商
- iphone申请AppleID后无法登陆App Store
- 服务器机箱销售跑哪些地方,网购主机老出问题?其实你早已上当受骗,这些猫腻很多人都不知道...
- 2022华为机试真题 C++ 实现【统计射击比赛成绩】
- 13.2-“制作一款私有IAP串口下载小工具”之串口IAP的通信协议设计
- 超纯水制备树脂MB-115、MB-106UP产水18.25兆欧
- 蓝桥杯 试题 B: 纪念日
- GIS是个什么鬼,真的开眼了。感谢好学生的奉献。
- LiveMe x TiDB丨单表数据量 39 亿条,简化架构新体验
- 二、LoRaWAN Gateway【LoRaWAN实战项目】