执行此查询的最有效方法是什么:
表中有5列:A(唯一标识符),B(分组变量),C(分组变量),D(日期值),E(数值)和F(数值),其中D列=昨天。
B和C不是互斥的。我需要为所有C找到sum(E)和sum(E,其中E> 0),此时除了日期(D列)之外没有其他过滤器。然后我需要找到,除了D列之外没有其他过滤器,所有B其中sum(E)= 0.我需要从这个提取所有A附加到B和E的最后一个查询。然后,我需要加入对EI进行总和查询的A值为C做了。从计算效率的角度来看,这是最有效的方法。
有没有办法可以运行D =昨天的所有记录的第一个查询,并从那里本地操作数据,而不是使用外部数据库运行多个查询?
谢谢。
编辑:
表:
Column A Column C Column B Column D Column E Column F
1 A A 09/26/2014 50 1000
2 A B 09/26/2014 -20 300
3 A C 09/26/2014 80 23500
4 B A 09/26/2014 -50 5000
5 B B 09/26/2014 40 3100
6 B C 09/26/2014 10 4500
1 A A 09/25/2014 50 1000
2 A B 09/25/2014 -20 300
3 A C 09/25/2014 80 23500
4 B A 09/25/2014 -50 5000
5 B B 09/25/2014 40 3100
6 B C 09/25/2014 10 4500
我想要的结果是:
Column A Column C Column B Column D Column E Column F Sum(E on C/D) Sum(E > 0 on C/D)
1 A A 09/26/2014 50 1000 110 130
4 B A 09/26/2014 -50 5000 0 50
答案 0 :(得分:0)
根据您指定的表格,以下查询将为您提供指定的所需结果
select min(columna) keep
(dense_rank first
order by columnb) columna
, columnc
, min(columnb) columnb
, columnd
, min(columne) keep
(dense_rank first
order by columnb) columne
, min(columnf) keep
(dense_rank first
order by columnb) columnf
, sum(columne) sume_1
, sum(case
when columne > 0 then columne
else 0
end) sume_2
from mytable
where columnd = to_date('09/26/2014', 'MM/DD/YYYY')
group by columnc
, columnd