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