我是MSSQL的新手并且每天都在学习更多知识,我有一个网站使用了一个名为“LoginTime'这是一个INT,每当用户登录该字段时,该特定用户的+1增加+1。我现在要做的是让该字段在每个月的第一天自动从0开始。通过这种方式,我可以获得每个月末用户在一个月内登录的平均次数。我应该考虑什么才能让我的SQL服务器执行此操作...触发器,存储过程等。
答案 0 :(得分:1)
不是在表上维护计数器,而是为每次成功登录添加新记录。抛出一个查询,按用户按月汇总用户的登录尝试...示例如下:
DECLARE @LoginTable TABLE
(
UserName VARCHAR(50),
LoginTime DATETIME
)
INSERT INTO @LoginTable VALUES ('user1', '2014-01-01')
INSERT INTO @LoginTable VALUES ('user1', '2014-01-02')
INSERT INTO @LoginTable VALUES ('user1', '2014-01-08')
INSERT INTO @LoginTable VALUES ('user1', '2014-02-01')
INSERT INTO @LoginTable VALUES ('user1',' 2014-02-16')
INSERT INTO @LoginTable VALUES ('user2', '2014-01-07')
INSERT INTO @LoginTable VALUES ('user2', '2014-01-09')
INSERT INTO @LoginTable VALUES ('user2', '2014-02-24')
INSERT INTO @LoginTable VALUES ('user2',' 2014-02-26')
SELECT UserName, LEFT(CONVERT(VARCHAR, LoginTime, 120), 7) AS [Year-Month], COUNT(Logintime) AS Logins
FROM @LoginTable
GROUP BY UserName, LEFT(CONVERT(VARCHAR, LoginTime, 120), 7)
答案 1 :(得分:0)
第1步 - 从表中删除列
步骤2 - 如果您还没有,请添加一个表来存储登录。它的字段应该是userId以及登录的日期和时间。
通过这种方式,您可以查看用户在任何日期范围内登录的频率。