SQLite排名时间戳

时间:2014-08-12 14:02:44

标签: sqlite

我是SQL的新手,我遇到了一个(相当简单的)查询排序时间戳的问题。

我有一张表格,其中包含2014年的调查数据。我正在尝试确定良好的客户满意度表现的“学习曲线”。我想根据调查的时间戳在代理级别对每个调查进行排序和排名。这可以让我看到当代理人有5个总调查时,平均表现是什么,10,20等等。

我想它应该是(表名是tablerank):

select  T1.*,
       (select  count(*) 
        from    tablerank as T2
        where   T2.call_date > T1.call_date
        ) as SurveyRank
from    tablerank as T1
where   p1.Agent_ID = T2.Agent_ID;

对于每个代理,它会按顺序列出每个调查,并为最早的调查标记为1,为最早的调查标记为2,等等。然后我可以在Excel中旋转数据并根据调查计数查看学习曲线比任期或时间(因为调查更为罕见,有时你一个月只能得到1或2)。

1 个答案:

答案 0 :(得分:0)

相关子查询必须在子查询本身中具有相关性;子查询中的任何表名/别名(例如T2)在外部查询中都不可见。

对于排名,您希望计算之前的调查,并且希望包含当前调查,以便第一个调查获得排名编号1,因此您需要使用<=代替>

SELECT *,
       (SELECT COUNT(*)
        FROM tablerank AS T2
        WHERE T2.Agent_ID = T1.Agent_ID
          AND T2.call_date <= T1.call_date
       ) AS SurveyRank
FROM tablerank AS T1