被遗忘的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 ...
随机推荐
- Delphi通过IE窗口句柄获取网页接口(IWebBrowser2)
主要用到的是MSAA(Microsoft Active Accessibility) 函数:ObjectFromLResult,该函数在动态链接库 oleacc.dll 中定义. uses SHDoc ...
- Python中的元类(译)
add by zhj: 这是大stackoverflow上一位小白提出的问题,好吧,我承认我也是小白,元类这块我也是好多次想搞明白, 但终究因为太难懂而败下阵来.看了这篇文章明白了许多,再加下啄木鸟社 ...
- vue:在路由跳转中使用拦截器
1:首先在路由对象中的某一个具体的路由对象加这样一个属性 meta: { requireAuth:true } 2:然后在main.js中添加这段代码 router.beforeEach((to, ...
- easy.py使用中ValueError: could not convert string to float: svm_options错误问题解决
在使用easy.py中出现如下图所示问题 解决方法: 1.找到cmd = '{0} -svmtrain "{1}" -gnuplot "{2}" "{ ...
- 【转】UGUI研究院之缓存策略让UI打开更快(三十)
UGUI研究院之缓存策略让UI打开更快(三十) [投稿]Unity3D游戏优化之头顶UI 注意里面提到了:SuperTextMesh:能渲染动态文字,富文本支持图文混排,缺点是支持atlas但很弱,资 ...
- [ SHELL编程 ] 数组、关联数组和awk数组
本文主要对shell编程中常用的数组.关联数组和awk数组定义.操作以及注意事项做个总结,并提供具体案例. 数组 数组定义:一对圆括号表示数组,数组元素之间用空格符号分割. Array=(val1 v ...
- python实现排序算法二:归并排序
##归并排序 ##基本思想:对于两个排好序的数组A和B,逐一比较A和B的元素,将较小值放入数组C中,当A或者B数组元素查询完后,将A或者B剩余的元素直接添加到C数组中,此时C数组即为有序数组,这就是归 ...
- 组播协议——IGMP v2报文头介绍
TYPE:占一个字节,其值有:0x16.0x12.0x17三种类型. Max Resp Time:最大响应时间,占一个字节. Checksum:校验和,占两个字节. Group address:组播地 ...
- easyui分页,根据网友的一段代码优化了一下
千言万语尽在代码中,可以自己看,不清楚留言吧! <%@ Page Language="C#" AutoEventWireup="true" CodeBeh ...
- 初始C语言中的数组(男神翁凯老师MOOC)
定义数组 ●<类型>变量名称[元素数量]; ● int grades[100]; ●double weight[20]; ●元素数量必须是整数 ●C99之前:元素数量必须是编译时刻确定的字 ...