繁体   English   中英

计算SQL中每个用户的session并发

Calculate session concurrency for each user in SQL

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个用户登录和注销表。

该表看起来像这样,但有几十万行:

抱歉,我的示例在 Python 中。但是我对 SQL 解决这个有趣问题的解决方案感兴趣。

data = [['aa', '2020-05-31 00:00:01', '2020-05-31 00:00:31'],
        ['bb','2020-05-31 00:01:01', '2020-05-31 00:02:01'],
        ['aa','2020-05-31 00:02:01', '2020-05-31 00:06:03'],
        ['cc','2020-05-31 00:03:01', '2020-05-31 00:04:01'],
        ['dd','2020-05-31 00:04:01', '2020-05-31 00:34:01'],
        ['aa', '2020-05-31 00:05:01', '2020-05-31 00:07:31'],
        ['bb','2020-05-31 00:05:01', '2020-05-31 00:06:01'],
        ['aa','2020-05-31 00:05:01', '2020-05-31 00:08:03'],
        ['cc','2020-05-31 00:10:01', '2020-05-31 00:40:01'],
        ['dd','2020-05-31 00:20:01', '2020-05-31 00:35:01']]


df_test = pd.DataFrame(data,  columns=['user_id','login', 'logout'], dtype='datetime64[ns]')

我能够使用 Python 中的 for 循环以一种骇人听闻的方式解决这个问题。

基本上,此代码计算每个 session (会话是每一行)同时登录的用户数量

这是我的解决方案。 它给出了我需要的结果。

# create a new column for simultaneous
df_test['simultaneous'] = 0

start_time = time.time()

# loop through dataframe and check condition
for i in df_test.index:
    login, logout = df_test.loc[i,'login'], df_test.loc[i,'logout']
    this_index = df_test.index.isin([i])
    df_test.loc[i, 'simultaneous'] = int(sum(
        (df_test[~this_index]['login'] <= logout) & (df_test[~this_index]['logout'] >= login)
    ))
print("--- %s seconds ---" % (time.time() - start_time))

. 任何类型的 SQL 实现并发都可以。 我想为此比较 python 和 SQL 运行时。

提前致谢!

问题暂未有回复.您可以查看右边的相关问题.
1 在用户会话中保持并发

新手程序员:Web应用程序正与RFID读卡器(作为键盘仿真器)一起使用。 当用户在特定字段中扫描RFID卡时,RFID阅读器会粘贴卡号,然后自己按Enter键,从而提交表单。 有时,用户扫描卡一次,而读取器将其检测到2次(已与供应商联系,但读取器不支持重新检测延迟之类的事情)。 因此,在后 ...

2 linq-to-sql用户并发

我目前正在使用linq-to-sql的C#窗体,从SQL表中选择一行,然后允许用户编辑该行中的字段。 这个表单将被多个用户一次使用,我想拥有它,当有人选择了一行并且当前正在表单中输入数据时(一旦用户点击表单上的按钮,该行将被更新) )没有其他人可以选择该行。 一旦用户点击按钮执行更新查询,就 ...

3 计算每个元素的SQL

我需要对我的数据集执行简单的计算: 我使用以下SQL语句检索我的信息: 除了一件事,我的结果非常好: 频率仅指AA,我想计算每对夫妇的频率。 结果应为: 不好,我无法弄清楚。 ...

5 计算应付给每个用户的金额

我想计算应付给每个用户的金额。 这可能是否定的。 简要地: MustPay = AmountTaken - AmountPaid 我无法编写 sql 查询。 表: ...

2021-03-11 18:13:29 1 49   mysql/ sql
7 如何使用 Spark-SQL 在单击 stream 数据集中计算每个用户每分钟唯一的 session id?

想象一下,我们有一个包含数百万行的点击流数据集。 我们想要计算每个用户每分钟的唯一会话 ID。 样本数据集: 我已经在 Spark-Scala 中编写了一个代码来解决这个问题,但它不是具有数百万行数据集的最佳解决方案。 我想要一个比我已经实施的更好的解决方案。 下面是我的实现的源代码: Outp ...

8 如何计算每个会话中的警告日志计数?

我需要在处理特定请求时计算警告日志计数。 流程:将项目信息从一个数据库传输到另一个数据库。 在处理基于其他约束的事务时,我们正在编写警告,信息和调试日志。 让我们考虑2个或更多的用户在执行此过程,在事务结束时,我需要通知用户“ 您的过程已完成日志。请检查日志。 ”或者我必须向用户显 ...

9 计算每个步骤的过程-在SQL中

其中包括流程中的步骤以及每个步骤的状态。 对于已完成的游行,“ Done”步骤是最后一步,其持续时间为0一个没有“ Done”阶段的过程-它仍然继续运行查询,我需要查询以在表中添加另一列,以计算每个分钟的分钟数在此过程的第一步中,我将感谢您的帮助。哪种语法有效,添加了表创建和数据的语法: ...

2019-07-18 08:58:26 2 61   sql
10 计算每月 SQL 的成本

我需要计算每个月每个项目的成本,该项目由任务组成。 我有一个员工表、任务表和项目表。 但我不知道如何计算每个月的项目成本,到目前为止我有这个: 但这并不能计算每个月为一个项目收取多少费用,它只是通过按员工小时费率计算员工的工作时间来计算总成本。 在任务表中,我确实有一个 date_worked ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM