Sql 每个用户的用户登录总数
我正在跟踪用户登录的次数以及登录/注销的时间。例如,数据是:Sql 每个用户的用户登录总数,sql,Sql,我正在跟踪用户登录的次数以及登录/注销的时间。例如,数据是: USER LOGGED IN LOGGED OUT ----------------------------------- DAVID 01/01/2015 02/01/2015 GEORGE 02/01/2015 02/01/2015 DAVID 04/01/2015 07/01/2015 PETER 10/01/2015 11/01/2015 DAV
USER LOGGED IN LOGGED OUT
-----------------------------------
DAVID 01/01/2015 02/01/2015
GEORGE 02/01/2015 02/01/2015
DAVID 04/01/2015 07/01/2015
PETER 10/01/2015 11/01/2015
DAVID 17/01/2015 18/01/2015
现在,我尝试创建的查询需要返回以下内容:
USER LOGGED_IN LOGGED_OUT SUM
---------------------------------------------
DAVID 01/01/2015 02/01/2015 3
DAVID 04/01/2015 07/01/2015 3
DAVID 17/01/2015 18/01/2015 3
GEORGE 02/01/2015 02/01/2015 1
PETER 10/01/2015 11/01/2015 1
目前的问题是
select user, logged_in, logged_out
from login_records;
我可以对该查询做什么更改,以将用户的条目总数显示为附加列,而无需进行其他查询?出于性能原因
谢谢。只需将相关子查询添加到您的选择:
select user, logged_in, logged_out, (select count(*) from login_records t2
where t2.user = t1.user) as sum
from login_records t1;
注意,user在ANSI SQL中是一个保留字,因此您可能需要将其分隔为user、t1.user等。但是我正在执行另一个查询,不是吗?是的,当然这是另一个查询。你不能免费获得额外的数据。你可以通过分析functions@sagi,我不太确定你来了。OP的查询未被触及,但仍能获得更多信息?您使用的是哪个数据库?可能会有不同的答案,这取决于。。。
Select user, logged_in , logged_out,
count(*) over ( partition by user) as sum
from login_records t1;