甲骨文:如何获得总和&根据最小日期值计算

时间:2016-08-03 11:15:17

标签: sql database oracle

我有以下表格:

表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

中生成满足上述要求的查询

1 个答案:

答案 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

中使用