回答

收藏

计算彼此相距10秒以内的行数

技术问答 技术问答 146 人阅读 | 0 人回复 | 2023-09-14

我跟踪网络访问者。我存储它。IP地址和访问时间戳。
$ d, Y: d* T- H+ gip_address    time_stamp180.2.79.3  1301654105180.2.79.3  1301654106180.2.79.3  1301654354180.2.79.3  1301654356180.2.79.3  1301654358180.2.79.3  1301654366180.2.79.3  1301654368180.2.79.3  1301654422我有一个查询来获得总曲目:
7 [4 g1 s% N4 w3 K% r3 a, RSELECT COUNT(*) AS tracks FROM tracking然而,我现在忽略了每次访问后10秒内多次访问的用户的访问。因为我不认为这是另一次访问,它仍然是第一次访问的一部分。8 ]9 [" ?  U. I% y0 M) c) B2 b
当ip_address相同时,请检查时间戳记,并且仅计算彼此相距10秒的那些行。: p5 d1 d: J+ r( h! L9 @$ J
我把它放进去SQL在查询表格时遇到困难,我将非常感激!. _' I, j$ j- Y9 n
                                                                % q) j2 x* |/ `* a5 Q& Y9 H
    解决方案:                                                                % O2 Y# o5 i3 r: z
                                                                让我从这张桌子开始。我将使用普通时间戳记,以便我们可以轻松了解发生了什么。
6 M- L! K, x- I, ^9 ]' f0 L9 T2 |180.2.79.3   2011-01-01 08:00:00180.2.79.3   2011-01-01 08:00:09180.2.79.3   2011-01-01 08:00:20180.2.79.3   2011-01-01 08:00:23180.2.79.3   2011-01-01 08:00:25180.2.79.3   2011-01-01 08:00:40180.2.79.4   2011-01-01 08:00:00180.2.79.4   2011-01-01 08:00:13180.2.79.4   2011-01-01 08:00:23180.2.79.4   2011-01-01 08:00:25180.2.79.4   2011-01-01 08:00:27180.2.79.4   2011-01-01 08:00:29180.2.79.4   2011-01-01 08:00:50如果我对你有正确的理解,你需要这样数。
  b% z3 v2 H& Q# b2 d2 v, [- G180.2.79.3   3180.2.79.4   3你可以通过选择两者的最大时间戳每一次ip_address做到这一点
& G4 k3 n8 t+ E/ q! `大于当前时间戳,而且
9 Q, H7 a8 B& m) v# `  `+ R小于或等于当前行的时间戳的10秒。
把这两个条件放在一起会引入一些空值,其实很有用。
: I2 ]8 X2 V; e8 F+ Q6 uselect ip_address,       t_s.time_stamp,       (select max(t.time_stamp)         from t_s t         where t.ip_address = t_s.ip_address           and t.time_stamp > t_s.time_stamp          and t.time_stamp - t_s.time_stamp 180.2.79.3   2011-01-01 08:00:200  20111-01-01 08:00:25180.2.79.3   2011-01-01 08:00:23  2011-01-01 08:00:25180.2.79.3   2011-01-01 08:00:25 180.2.79.3   2011-01-01 08:00:400180.2.79.4   2011-01-01 08:00180.2.79.4   2011-01-01 08:00:13  2011-01-01 08:00:23180.2.79.4   2011-01-01 08:00:23  2011-01-01 08:00:29180.2.79.4   2011-01-01 08:00:25 2011-01-01 08:00:29180.2.79.4   2011-01-01 08:00:27  20111-01-01 08:00:29180.2.79.4   2011-01-01 08:00:29   180.2.79.4   2011-01-01 08:00:50 标记访问结束时间戳自己next_page为空。那是因为没有时间戳小于或等于银行。time_stamp   10秒。
: ]0 f- {* a) @% O. ~我可得到一个计数,我可以创建一个视图并计算空值。. r6 v" U2 P+ t" O% Z  p/ p
select ip_address,count(*)from t_s_visits where next_page is nullgroup by ip_address180.2.79.3   3180.2.79. 4  3
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则