被遗忘的having
清明节后公司网站搞活动主要功能很简单就是实现一个消费送的功能。比如, 当天消费金额满5000 返回10%,5000 及以下 返 7% 的功能。本身这个功能不是很难,但是 这个功能跟上次的一个 新用户消费送的活动重复了。于是,上面发话说,两个活动只能享受一个 。于是乎 问题来了。 在做排除的时候我先用的是 not in , 就是先查出满足条件的 所有用户 然后在查出今天已经送过的用户用not in 对比,其实这样的思路很正常。但是忘记考虑效率问题了、写完之后负责人一看, 说:不行, 你这写的太麻烦了,执行效率很慢,优化优化吧。。
本身对SQL 的执行效率就不 是很了解。想了各种办法 ,但是都说执行效率慢。 实在没招了,就要放弃的时候,老同事说让我跟另外一个新同事商量商量。就去问问了问她的思路。其实这不是她的任务 估计她也没多想,商量了半天 她也没什么好主意。但是虽然说她 没给解决办法,但是经过跟她这么一说 还真是有了新思路
select o.initiate_user_id, nvl(sum(o.money), 0) totalMoney,case when nvl(sum(o.money), 0) >= 5000 then 10 else 7 end precent,o.initiate_username
from tb_order o
where o.bonus_status = 4
and o.print_status = 2
and o.quash_type = 0
and to_char(o.buy_time, 'yyyy-MM-dd') = to_char(sysdate - 1, 'yyyy-MM-dd')
/*and to_char(o.buy_time, 'yyyy-MM-dd') = to_char(sysdate - 1 - 3, 'yyyy-MM-dd') ----测试数据*/
and o.lottery_id = 82
group by o.initiate_user_id, o.initiate_username
having (select count(f.change_id) from b_fund_chng f
where f.change_type = 1
and f.reason_type = 48
and f.reason_id = o.initiate_user_id || to_char(sysdate, 'yyyyMMdd')
/*and f.reason_id = o.initiate_user_id || to_char(sysdate - 3, 'yyyyMMdd') ----测试数据*/
)<1
order by totalMoney desc;
这里百度了一下 having的用法:
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
在这里写一个简单 的 sql 语句
select em_id, sum(gl_limit),SUM(gl_already_get) from t_get_limit group by em_id having sum(gl_limit)>60
被遗忘的having的更多相关文章
- IOS 杂笔-14(被人遗忘的owner)
*owner在开发中现在已经很少用了 有兴趣的童鞋可以看看* 我们遇到owner通常是在类似 [[[NSBundle mainBundle] loadNibNamed:@"Food" ...
- Machine Learning Algorithms Study Notes(6)—遗忘的数学知识
机器学习中遗忘的数学知识 最大似然估计( Maximum likelihood ) 最大似然估计,也称为最大概似估计,是一种统计方法,它用来求一个样本集的相关概率密度函数的参数.这个方法最早是遗传学家 ...
- linux系统root密码遗忘的情况下的解决办法
机房一台centos系统的服务器,由于这台服务器的系统装了好长时间,且root密码中间更新过几次,后面去机房现场维护时,登陆密码遗忘了,悲催啊~ 没办法,只能开机进入“单用户模式”进行密码重置了. 下 ...
- CentOS7 登陆密码遗忘和修改
在虚拟机当中我们设置的linux密码可能会遗忘,那么我们怎么来找回密码,并且重置密码呢? 1:我们需要进入单用户模式才能修改密码 1:重启linux,进入grub界面,敲击空格键暂停 2:按 ...
- Windows Server 2008 R2遗忘管理员密码后的解决方案
在日常的工作中,对于一个网络管理员来讲最悲哀的事情莫过于在没有备用管理员账户和密码恢复盘的情况下遗忘了本地管理员账户密码. 在早期的系统中,遇到这种事情可以使用目前国内的很多Windows PE光盘来 ...
- [转] 被遗忘的Logrotate
FROM : http://huoding.com/2013/04/21/246 我发现很多人的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相 ...
- 如何重置CentOS/RHEL 7中遗忘的根用户帐户密码
你有没有遇到过这种情况:想不起来Linux系统上的用户帐户密码?要是你忘了根用户密码,情况就更为糟糕.你无法执行任何面向整个系统的变更.要是你忘了用户密码,很容易使用根帐户来重置密码. 可要是你忘了根 ...
- 被遗忘的Android mipmaps简介
被遗忘的 Android mipmaps 简介 [导读]已经发布的 Android Studio1.1 版本是一个 bug 修复版本.在这个版本中,当你创建工程时一项改变将会吸引你的眼球.工程创建登陆 ...
- 15个易遗忘的Java问题
通常,在面试中,会遇到面试官提一些比较“偏冷”的基础知识,比如基本数据类型所占用的字节数,或者Unicode和UTF-8的区别之类的问题,这时很多应聘者会答错.还有在平常编码的过程中,很多时候会用到除 ...
- (转)iOS被开发者遗忘在角落的NSException-其实它很强大
转载自 http://www.jianshu.com/p/05aad21e319e iOS被开发者遗忘在角落的NSException-其实它很强大 字数597 阅读968 评论4 喜欢28 NSExc ...
随机推荐
- 剑指offer例题——跳台阶、变态跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路: n<=0时,有0种跳法 n=1时,只有一种跳法 n=2时,有 ...
- How to Pronounce the Word ARE
How to Pronounce the Word ARE Share Tweet Share Tagged With: ARE Reduction Study the ARE reduction. ...
- centos7启动iptables时报Job for iptables.service failed because the control process exited with error cod
centos7启动iptables时报Job for iptables.service failed because the control process exited with error cod ...
- ASP.NET 身份验证机制
ASP.NET提供了3种认证方式:windows身份验证:IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问.Forms验证 :用Cookie来保存 ...
- Ajax与select标签的组合运用
---------------------------------------------------------------------------------------------------- ...
- js版MD5 (Message-Digest Algorithm)加密算法
/**** MD5 (Message-Digest Algorithm)* http://www.webtoolkit.info/***/ var MD5 = function (string) { ...
- MVC缺点总结
MVC的缺点: 1.完全理解MVC比较复杂. 由于MVC模式提出的时间不长,加上同学们的实践经验不足,所以完全理解并掌握MVC不是一个很容易的过程. 2.调试困难. 因为模型和视图要严格的分离,这样也 ...
- Linux下设置动态库的方法
库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的. 一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使 ...
- unity 数学公式
Mathf.Abs绝对值 计算并返回指定参数 f 绝对值. Mathf.Acos反余弦 static function Acos (f : float) : float 以弧度为单位计算并返回参数 f ...
- Unity3D架构设计NavMesh寻路
Unity3D架构设计NavMesh寻路 发表于2013年10月6日由陆泽西 国庆闲来没事把NavMesh巩固一下.以Unity3D引擎为例写一个底层c# NavMesh寻路.因为Unity3D中本身 ...