SQL脚本,以便在日志表中获得响应时间

时间:2015-01-01 18:31:23

标签: sql sql-server google-bigquery

我有一个场景,我真的不知道如何编写SQL命令。我有一个日志表,用于保存用户和管理员的数据。用户进行插入或编辑等事务。对于编辑,它可能超过在管理员批准之前一次。管理员会批准或拒绝这些用户事务。我想知道管理员对用户的响应有多快。

让我们看一下用户A的交易。

日志表

Insert 20/01/2014 11:30:00 -->User trans 1
Approve 20/01/2014 11:40:05 -->Admin trans 1 responses to User trans 1
Edit 20/01/2014 12:00:01 -->User trans 2 -> first transaction after admin approved
Edit 20/01/2014 12:05:10 -->User trans 3
Approve 20/01/2014 12:06:45 -->Admin trans 2 responses to User trans 2 and 3
Edit 20/01/2014 13:01:56 -->User trans 4 -> first transaction after admin approved
Edit 20/01/2014 14:34:00 -->User trans 5
Approve 20/01/2013 14:43:00 -->Admin trans 3 responses to User trans 4 and 5
Edit 20/01/2014 15:55:43 -->User trans 6 -> first transaction after admin approved
Approve 20/01/2014 16:01:00 -->Admin trans 4 response to User trans 6

计算此方案的响应时间

Admin trans 1对用户trans 1的响应然后响应的时间是11:40:05-11:30:00

Admin trans 2对用户trans 2和3的响应,但我们计算在管理员批准后第一次用户交易的响应时间,然后响应的时间是12:06:45-12:00:01

Admin trans 2对用户trans 2和3的响应,但我们计算在管理员批准后第一次用户交易的响应时间,然后响应的时间是14:43:00-13:01:56

Admin trans 2对用户trans 2的响应然后响应的时间是16:01:00-15:55:43

表格结构

uuid STRING NULLABLE
描述这个领域...... 引用者STRING NULLABLE
描述这个领域...... item_id INTEGER NULLABLE
描述这个领域...... member_id INTEGER NULLABLE
描述这个领域...... admin_id INTEGER NULLABLE
描述这个领域...... cate_id INTEGER NULLABLE
描述这个领域...... listing_status INTEGER NULLABLE
描述这个领域...... monitor_status INTEGER NULLABLE
描述这个领域...... 注意STRING NULLABLE
描述这个领域...... txn_type STRING NULLABLE
描述这个领域...... ip_address STRING NULLABLE
描述这个领域...... 电子邮件STRING NULLABLE
描述这个领域...... post_name STRING NULLABLE
描述这个领域...... user_agent STRING NULLABLE
描述这个领域...... 时间戳STRING无效
描述这个领域...... http_host STRING NULLABLE
描述这个领域...... 键入STRING NULLABLE
描述这个领域...... ua_name STRING NULLABLE
描述这个领域...... ua_os STRING NULLABLE
描述这个领域...... ua_patch STRING NULLABLE
描述这个领域...... ua_os_major STRING NULLABLE
描述这个领域...... ua_os_minor STRING NULLABLE
描述这个领域...... ua_os_name STRING NULLABLE
描述这个领域...... ua_build STRING NULLABLE
描述这个领域...... ua_device STRING NULLABLE
描述这个领域...... ua_major STRING NULLABLE
描述这个领域...... ua_minor STRING NULLABLE
描述这个领域...... log_source STRING NULLABLE
描述这个领域...... timestamp_int INTEGER NULLABLE
描述这个领域...... geoip RECORD NULLABLE
描述这个领域...... geoip.ip STRING NULLABLE
描述这个领域...... geoip.country_code2 STRING NULLABLE
描述这个领域...... geoip.country_code3 STRING NULLABLE
描述这个领域...... geoip.country_name STRING NULLABLE
描述这个领域...... geoip.continent_code STRING NULLABLE
描述这个领域...... geoip.region_name STRING NULLABLE
描述这个领域...... geoip.city_name STRING NULLABLE
描述这个领域...... geoip.latitude FLOAT NULLABLE
描述这个领域...... geoip.longitude FLOAT NULLABLE
描述这个领域...... geoip.timezone STRING NULLABLE
描述这个领域...... geoip.real_region_name STRING NULLABLE
描述这个领域......

请指导

感谢。

1 个答案:

答案 0 :(得分:1)

如果您可以将“批准”与其批准的“编辑”匹配,那么您应该能够自行加入您的表格以将这些加入到单行中。批准和编辑在同一行后,您可以计算差异以查找批准延迟。

像这样的东西(用你用来匹配审批日志行的任何内容替换approve.approve_id = edit.edit_id到它所关联的第一个编辑日志行):

SELECT approve.timestamp - edit.timestamp as delay
  FROM
    [table] AS approve
    JOIN [table] as edit
    ON approve.approve_id = edit.edit_id