我有以下表格:
表1(第1栏,第2栏,第3栏,日期)
我想得到数(第1列)&当日期大于日期列中的最小日期值时,sum(column2)和相同的count / sum。
虽然可以通过第3列中的一个条件控制4个所需值。
Column 1 , Column 2 , Column 3 , Date
A 1 1 5/5/2016
G 5 0 5/10/2016
B 1 2 5/10/2016
A 12 1 5/10/2016
D 1 1 5/5/2016
A 1 1 5/11/2016
C 7 1 5/5/2016
C 1 1 5/12/2016
E 10 2 5/10/2016
我希望当第3列的过滤器= 1时得到以下结果:
Count (1) , Sum(2) , Count(1) when date greater than minimum ,Count(2) when date greater than minimum
3 , 23 , 2 , 14
我尝试使用案例,因为我不需要按值进行分组。
如何在oracle
中生成满足上述要求的查询答案 0 :(得分:1)
您可以使用case
。如你所述:
select count(column1), sum(column2),
count(case when date > mindate then column1 end),
sum(case when date > mindate then column2 end)
from (select t.*, min(date) over () as mindate
from table1 t
) t;
这使用窗口函数来获取最小日期,该日期在case
。