当前位置: 首页 > 知识库问答 >
问题:

SQL将所有事件绑定到3个月的桶中

柳景胜
2023-03-14

我正在尝试创建一个3个月向前看类型表。因此,例如,任何last_day(event_date)='2021-01-01'(即Jan-2021)的事件在2021年2月和2021年3月也是有效的。

对于每一个事件,我想在发生后的2个月内再排一次。以下示例:

给定如下所示的数据:

我想创建一些看起来像这样的东西:

有点纠结于如何实现这一点。您可以假设event_date在这里是有效的datetime字段。我试过几种不同的方法都没有用。对于类似的情况,我通常使用窗口函数,这里有preforefollows限制,但leadlag类型函数只允许设置1个偏移量,而不允许设置偏移量范围。

感谢任何帮助。在psql工作。

共有1个答案

子车征
2023-03-14

您可以通过两个步骤完成此操作:

  1. 对数据进行分组(例如,A出现两次,但您只想计算一次,因为在本例中,A的两行是相同的)
  2. 生成下个月和下个月的新数据和附加行

给出示例,第一步很简单,在更复杂的情况下,您可能使用group by对数据进行分组,这里使用distinct就足够了:

select distinct event_date, customer_id from table;

这是基础,每行生成的另外两个信息依赖于此数据。也许您可以为此创建一个视图并重用它。我将这样做,并将其称为view,但您也可以直接使用SQL语句。将其视为view等于select distinct event_date,customer_idfrom table

第二步可以通过添加下个月的数据和下个月的数据来完成。一个联盟浮现在脑海中。

select event_date, customer_id from view
UNION 
select next_month(event_date), customer_id from view
UNION
select after_next_month(event_date), customer_id from view

现在我们剩下的是日期算术,你要计算下个月和下一个月。

如果您可以的话,我建议您只在日期上加上30,例如选择event_date+30,customer_id,从view选择event_date+60,customer_id,从view

否则,进行适当的日期算术应该不会太困难,请参阅日期/时间函数和运算符。

 类似资料:
  • 问题内容: 这是哪里来的 当我第一次学习jQuery时,通常会附加如下事件: 在学习了更多关于选择器速度和事件委托的知识之后,我在几个地方读到“ jQuery事件委托将使您的代码更快。” 所以我开始写这样的代码: 这也是复制已过时的.live()事件的行为的推荐方法。这对我来说很重要,因为我的许多站点始终都在动态添加/删除小部件。上面的行为与.live()并不完全一样,因为只有添加到已经存在的容器

  • 问题内容: 禁用浏览器上下文菜单后,如何右键单击触发一些动作? 我试过了。。。 问题答案: jQuery中没有内置的oncontextmenu事件处理程序,但是您可以执行以下操作: 基本上,我取消了DOM元素的oncontextmenu事件以禁用浏览器上下文菜单,然后使用jQuery捕获mousedown事件,您可以在事件参数中知道按下了哪个按钮。

  • 由于我对js和jquery相当陌生,我想知道是否可以将多个键绑定到一个事件。我尝试了、和,但没有运气。 我希望将和绑定在一个大小写中,而不是另一个大小写。

  • 问题内容: 我正在使用./standalone.sh在独立模式下运行JBoss AS7。这会将JBOSS绑定到仅本地主机。有没有办法将它绑定到所有主机,我的意思是0.0.0.0。 较早的版本具有-b选项来传递0.0.0.0,我在这里找不到要使用的任何选项。 问题答案: 编辑 standalone / configuration / standalone.xml 并插入标记 any-address

  • 问题内容: 如果我使用画布来显示数据,并且希望用户能够单击画布上的各个项目以获取更多信息或以某种方式与其进行交互,那么最好的方法是什么? 在网上搜索,我可以找到有关如何将事件绑定到标签的信息,但这似乎比我想要的更间接。我不想使用标签对项目进行分组,而是在用户单击画布上的特定项目时进行特定的功能调用。 问题答案: 要与包含在对象中的对象进行交互,您需要使用以下格式的对象: item参数可以是标签或I

  • 问题内容: 如果我使用画布显示数据,并且希望用户能够单击 在画布上的各种项目上,以获取更多信息或进行交互 从某种程度上来说,最好的办法是什么? 在网上搜索我可以找到有关如何将事件绑定到标记的信息,但是 这似乎比我想要的更间接。我不想对项目分组 使用标记,但在用户单击时有特定的函数调用 画布上的特定项目。 问题答案: 要与“Canvas”对象中包含的对象交互,您需要使用 格式如下: item参数可以