Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择基于计数的行(SQLite)_Sqlite - Fatal编程技术网

选择基于计数的行(SQLite)

选择基于计数的行(SQLite),sqlite,Sqlite,希望得到一些帮助: 1) 我正在尝试为CustomerID选择所有调用(行),这些调用在30天的滚动期内显示6次或更多次,因此如果CustomerID在30天内在文件中出现6次或更多次,那么它将为我提供该CustomerID的所有记录 2) 我还需要选择CustomerID的所有调用,这些调用在30天的滚动期内显示2次或更多次,但前提是两个特定列也匹配(CallType1和CallType2)。非常类似于使用6个调用的查询,但是我们需要考虑调用类型也完全相同。 SELECT * FROM tab

希望得到一些帮助:

1) 我正在尝试为CustomerID选择所有调用(行),这些调用在30天的滚动期内显示6次或更多次,因此如果CustomerID在30天内在文件中出现6次或更多次,那么它将为我提供该CustomerID的所有记录

2) 我还需要选择CustomerID的所有调用,这些调用在30天的滚动期内显示2次或更多次,但前提是两个特定列也匹配(CallType1和CallType2)。非常类似于使用6个调用的查询,但是我们需要考虑调用类型也完全相同。

SELECT * FROM tablename
WHERE CustomerID IN (SELECT CustomerID FROM tablename
    WHERE "CustomerID" 
    IN ('MyProgram'));

上面的查询选择到达我的程序的所有CustomerID。我需要添加逻辑来计数>=6个CustomerID(上面的项目1),然后再进行第二次查询,以获得具有相同调用类型的>=2。

最内层的子查询计算从
开始的窗口中有多少调用。
中间子查询检查表中每个可能窗口的该值。(这是低效的,但SQLite没有窗口函数。)


这假设存在一列使用默认日期格式(
yyyy-mm-dd
)的
Date

第二个问题留作练习。无论如何,每个问题都应该发布一个问题。
SELECT *
FROM TableName
WHERE CustomerID IN (SELECT CustomerID
                     FROM TableName AS First
                     WHERE (SELECT COUNT(*)
                            FROM TableName
                            WHERE Date BETWEEN      First.Date
                                           AND date(First.Date, '+30 days')
                              AND CustomerID = First.CustomerID
                           ) >= 6)