我有一个特定的问题,我无法解决,我真的不知道如何解决它。
我可以说几天的总结事件。如下:
date | id | sub id | sum(a) | sum(b) | sum(c) |
18.01.01 | 1 | 12 | 105 | 10 | 0
18.01.01 | 2 | 11 | 100 | 3 | 7
18.01.02 | 1 | 12 | 103 | 2 | 5
18.01.03 | 3 | 7 | 143 | 7 | 9
18.01.03 | 1 | 12 | 113 | 1 | 4
我想知道的是每个id和sub id对的天数,例如:
sum(days) |date | id | sub id | sum(a) | sum(b) | sum(c)
3 |18.01.01 | 1 | 12 | 105 | 10 | 0
1 |18.01.01 | 2 | 11 | 100 | 3 | 7
3 |18.01.02 | 1 | 12 | 103 | 2 | 5
1 |18.01.03 | 3 | 7 | 143 | 7 | 9
3 |18.01.03 | 1 | 12 | 113 | 1 | 4
对于id = 1,有3天,因为他有3条不同日期的记录。 现在我知道基础知识,但每次我计算它返回无效值的天数(如id = 1的106)。并且日期是时间戳,我使用trunc(date,'DD')来获取它们的日常时间。我尝试提取(从日期开始的日期)甚至sum()over()但似乎没有任何工作正常。
提前感谢任何提示。 编辑:Stackoverflow错误地格式化表
答案 0 :(得分:1)
添加类似
的内容 COUNT(DISTINCT trunc(date, 'DD') ) OVER (PARTITION BY id, subID)
可能会奏效。如果没有,请发布您用来建立第一张桌子的声明。
答案 1 :(得分:1)
您似乎想要一个窗口功能:
select count(*) over (partition by id) as sum_days,
. . .