开窗函数与where条件相结合的时候的问题思考
2017-06-23 17:04
387 查看
开窗函数与where条件相结合的时候的问题思考
以下分析where条件放在和开窗函数同一查询中,和放在外层查询中的差别。开发中需要格外注意where放的位置代码如下:
select code, name from (select code, name, data_opt_type, active, is_league_saledept, row_number() over(partition by row_key order by data_opt_time desc) num1 from ecs.T_BSE_ORG_SALES_DEPARTMENT_real t3 ) t where num1 = 1 and data_opt_type is null and active = 'Y' and ( is_league_saledept ='N' or is_league_saledept is null)
以上sql涉及到子查询:因为表存在历史数据(时间拉链)的问题,所以需要对数据进行去重之后才能使用,故产生在使用开窗函数的时候使用where条件的数据筛选问题。
简单分析:
现在需求是:对存在时间拉链的数据取出最新版本并符合指定条件的数据。以上代码已经实现.
1,内层子查询,做的是去重时间拉链的数据最新的版本,外层where条件是对最新版本的数据进行条件的筛选。
如果where条件放在子查询中:就是相当于不论数据版本的新旧,我只要符合条件的,再对符合条件的数据中,取出时间版本最新的。
两种方式,分别采用不同的分级查询进行数据的处理,会产生数据差异很大的结果。
相关文章推荐
- mysql 删除和修改的时候,where 条件中使用原table报错的问题
- 当Select语句有Where的范围条件以及Order By时的索引字段顺序问题
- 在 SQL Server 2K 中实现 大小写敏感的查询条件(WHERE ...),类似 Access(VB) 的 StrComp 函数
- sql 自定义函数 ,where后拼接条件跳转语句,实现可变参数查询
- LUA中函数返回表的时候的问题
- 《coredump问题原理探究》Linux x86版4.3节函数的逆向之条件结构
- 函数参数----一道简单问题引发思考
- 问题五十三: 求满足条件n=a!+b!+c!的所有三位数n(a,b,c分别是n的百位十位个位)并输出,要求用自定义函数实现求阶乘。
- 函数的返回类型为指针类型时的若干思考(字符串常量问题)
- 关于MYSQL查询时WHERE条件值为数字的问题
- recv出现乱码后——对recv函数的一点思考和要注意的问题
- 在 SQL Server 2K 中实现 大小写敏感的查询条件(WHERE ...),类似 Access(VB) 的 StrComp 函数
- 多表连接时关于连接条件涉及到的Where 和And 问题
- 关于Python中函数重载问题的思考
- 提出问题的时候,给出自己的思考
- [原创]对“带条件选择的并行汇聚路由问题”的再思考
- 关于Python中函数重载问题的思考(原创)
- PHP正则preg_replace()函数 Unknown modifier 'c'问题 _新手学php正则的时候遇到的问题
- 从抽火柴的问题思考中去-如何从结论推导条件
- C51内核单片机中用printf()函数进行打印时候,中断的问题