【问题标题】:SQL script to get time to response in log table获取日志表中响应时间的 SQL 脚本
【发布时间】:2015-01-01 18:31:22
【问题描述】:

我有一个场景,我真的不知道如何编写 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

计算此场景的响应时间

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

管理员 trans 2 对用户 trans 2 和 3 的响应,但我们从管理员批准后的第一个用户事务计算响应时间,然后响应时间为 12:06:45-12:00:01

管理员 trans 2 对用户 trans 2 和 3 的响应,但我们从管理员批准后的第一个用户事务计算响应时间,然后响应时间为 14:43:00-13:01:56

管理员 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
描述这个领域... 列表状态 INTEGER NULLABLE
描述这个领域... monitor_status INTEGER NULLABLE
描述这个领域... 注意 STRING NULLABLE
描述这个领域... txn_type STRING NULLABLE
描述这个领域... ip_address STRING NULLABLE
描述这个领域... 电子邮件字符串为空
描述这个领域... post_name 字符串可以为空
描述这个领域... user_agent 字符串可以为空
描述这个领域... 时间戳 STRING NULLABLE
描述这个领域... http_host 字符串可以为空
描述这个领域... 输入 STRING NULLABLE
描述这个领域... ua_name 字符串可以为空
描述这个领域... 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 字符串为空
描述这个领域... ua_device 字符串可以为空
描述这个领域... ua_major STRING NULLABLE
描述这个领域... ua_minor STRING NULLABLE
描述这个领域... log_source STRING NULLABLE
描述这个领域... timestamp_int INTEGER NULLABLE
描述这个领域... geoip 记录为空
描述这个领域... geoip.ip 字符串可以为空
描述这个领域... 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
描述这个领域...

请指导

谢谢。

【问题讨论】:

  • 日志表中是否还有其他列?什么是pk?
  • 问题已理解,但 infi 不完整。请使用样本数据很少的表结构。很可能在第二个中使用 datediff。
  • 嗨,Nathan,此表没有 pk
  • 嗨 KumarHarsh,我已经更新了表结构,但由于太长而无法粘贴示例数据。

标签: sql sql-server google-bigquery


【解决方案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

【讨论】:

  • 嗨迈克尔,没有 id 表明问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 2018-05-21
  • 2021-09-10
  • 2011-05-31
相关资源
最近更新 更多