每月对SQL进行分组,同时查看需要花费一个月时间和一个月前时间的数据

时间:2019-04-17 23:36:06

标签: oracle-sqldeveloper

我正在尝试生成一个查询,其中查询一组实体,对于相同的实体实体关系,它查询3天滚动回溯。如果在前3天中,同一实体实体关系中至少有2次发生了水果交换次数存在且不为0的相同实体关系,则将其报告为发生。我想填充一个表,可以说每个月生成一次,该表用于每个合格实体-实体对的出现次数。

让我们在这里查看表格。

Unique_Id  Entity_1  Entity_2   Day Month   No Of Fruits
1001         John   Sam         1   A       98
1002         John   Sam         2   A       97
1003         John   Sam         3   A       67
1004         Beth   Sam         4   A       93
1005         John   Sam         5   A       89
1006         Beth   Sam         6   A       61
1007         Beth   Sam         7   A       90
1008         John   Sam         8   A       78
1009         Beth   Sam         9   A       90
1010         John   Sam         10  A       73
1011         Beth   Sam         11  B       85
1012         John   Sam         12  B       80
1013         Beth   Sam         13  B       64
1014         Beth   George      14  B       64
1015         John   Sam         15  B       98
1016         Beth   Sam         16  B       98
1017         Beth   Sam         17  B       81
1018         John   Sam         18  B       84
1019         Beth   Sam         19  B       74

有3种可能的实体实体关系。 约翰·山姆 贝丝·萨姆 贝丝·乔治。

对于A月份: 在第1天和第2天,由于没有数据,我们将忽略它。 对于第3天,John Sam进行了一次交易,如果我们看到前两天的交易,则至少还有一笔交易。这成为一种情况。 在第5天,考虑到第3天到第5天,John-Sam进行了一次交流,这满足了我的条件。这是另一种情况。 对于第8天,John Sam实体在第7天或第6天没有交易。因此,当天不会发生任何事情,因此也不算一次。

这是最棘手的部分。 在第11天的B个月,Beth和Sam又发生了一次,因为在第9天发生了一次交换。但这将在B个月进行报告。

下面是我的代码,但这不是我希望生成的代码:

select
entity1, entity2, month, day, count (*)
from table1
where day between day-2 and day --day is a number, not a date, so is month
group by entity1, entity2, day, month
having count(*) >= 2

我的最终表应类似于下表的前3列:

Month   Entity  Count   Days
A       John    3      3,5,10
A       Beth    3      6,7,9
B       John    1      12
B       Beth    4      11,13,17,20

预先感谢

0 个答案:

没有答案