首页 > 解决方案 > 如何在 SQLite 的窗口框架中添加数值?

问题描述

我在 SQLite 的 Windows 框架规范中添加数字时遇到了一些困难。我在 SQLITE 中使用 R。尽管如果您知道如何在 SQL 中执行此操作,那么这也很有帮助。

这是一个指向 sqlite 窗口函数文档的链接——尽管我很难理解我应该将数值放在哪里。

https://www.sqlite.org/windowfunctions.html

特别是我正在查看框架边界部分。

我一直收到错误消息:

Error: unsupported frame specification 

有任何想法吗?

我的代码如下:

"create temp table forward_looking as 
              SELECT *,  
        COUNT( CASE channel WHEN 'called_office'  THEN 1 ELSE null END)
        OVER (PARTITION by special_digs 
        ORDER BY time 
        RANGE FOLLOWING 604800) 
      AS new_count
      from my_data
    ")

基本上,代码应该查看 unix 纪元时间的时间列,然后提前 7 天(unix 时间为 604800)然后将计数添加到 new_count。并逐行执行此操作。

我想我的数字可能RANGE FOLLOWING是错误的??

标签: sqlrsqlitewindow-functions

解决方案


我认为你想要:

create temp table forward_looking as 
select 
    d.*,  
    count(*) filter(where channel <> 'called_office') over (
        partition by special_digs 
        order by time 
        range between current row and 604800 following
    ) as new_count
from my_data d

也就是说,该range子句需要一个开始和结束规范 ( between ... and ...)。

请注意,我还修改了窗口函数以使用标准filter子句,这使得逻辑更加明显。


推荐阅读