被遗忘的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 ...
随机推荐
- js 对象创建设计模式
创建js对象可以使用多种模式,每种模式有着不同的特点:如下: 1.工厂模式:创建一个函数,在函数中实例化一个对象,当每次调用函数时,就实例化一个对象,并返回这个对象: 我们知道,对象是引用形式的,每次 ...
- Spring/SpringBoot定义统一异常错误码返回
配置 大致说下流程, 首先我们自定义一个自己的异常类CustomException,继承RuntimeException.再写一个异常管理类ExceptionManager,用来抛出自定义的异常. 然 ...
- 【转】解决Eclipse中SVN版本信息不显示的问题
eclipse 中使用 svn 插件,原本正常,未作任何更改,最近几天突然eclipse 中查看文件时,文件后面的 版本号 . 文件的状态图标 等等都不见了.以为有插件冲突,卸载了好多其他的相关的插件 ...
- mysql 授权命令
MySQL 数据库赋予用户权限操作表 MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库 ...
- 迷你MVVM框架 avalonjs1.5.2 发布
经过2个小版本的试水, avalon1.5这个全新的架构也终于成熟了. 首先是组件的配置项,名字改了不少,让大家都满意. ms-duplex, ms-include, ms-if等指令的BUG修复. ...
- mysql explain预估剖析
http://www.cnblogs.com/LBSer/p/3333881.html 引子: 使用MySQL建立了一张表country,总共有才3121行记录. 但是使用explain select ...
- 单例模式 demo
// 用单例模式实现自定义颜色类 public class MyColor { private static MyColor _redColor = null; public static MyCol ...
- CAP与Base理论
分布一致性的提出 在分布式系统中要解决的一个重要问题就是数据的复制.在我们的日常开发经验中,相信很多开发人员都遇到过这样的问题:假设客户端C1将系统中的一个值K由V1更新为V2,但客户端C2无法立即读 ...
- mysql读写分离 主从同步
MySQL主从复制与读写分离的实现 转载 2013年01月17日 18:20:12 MySQL主从复制与读写分离 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy) ...
- Jenkins 踩过的坑之再总结
在安装完jenkins后,linux中默认使用的jenkins这个用户,这时在构建完项目后我们需要执行一些shell命令时会出现没有权限的情况,导致构建失败,这里我们需要给jenkins用户相应的权限 ...