27,579
社区成员
发帖
与我相关
我的任务
分享
--主要查的是Pub_OperateLog表,其他的表只是为了显示相关字段的。不相关的字段我隐藏掉了方便大家看
--用户表 Ucf_UserID:用户ID,RealName:用户名
select * from Ucf_User
--用户组表 RoleID:用户组ID,Name:用户组名称
select * from Sys_Role
--用户用户组关联表 UserID:用户ID,RoleID:用户组ID
select * from Sys_UserRole
--用户操作记录表 Pub_OperateLogID:主键ID,ModuleName:类型,LogType:记录类型(0:查看,1:回复),
--Scf_SiteBasicID:工点ID,Ucf_UserID:用户ID,LogTime:操作时间,CheckCount:数量集合(如果LogType=0,那么这个字段就是查看次数,LogType=1,那么这个字段就是回复次数)
select * from Pub_OperateLog
SELECT r.Name 用户组,
u.RealName 用户,
a.最近查看时间,
a.查看次数,
a.最近回复时间,
a.回复次数
FROM (
SELECT Ucf_UserID,
MAX(CASE WHEN LogType=0 THEN LogTime ELSE NULL END) 最近查看时间,
SUM(CASE WHEN LogType=0 THEN CheckCount ELSE NULL END) 查看次数,
MAX(CASE WHEN LogType=1 THEN LogTime ELSE NULL END) 最近回复时间,
SUM(CASE WHEN LogType=1 THEN CheckCount ELSE NULL END) 回复次数
FROM Pub_OperateLog
GROUP BY Ucf_UserID
) a
JOIN Ucf_User u
ON a.Ucf_UserID = u.Ucf_UserID
LEFT JOIN Sys_UserRole ur
ON a.Ucf_UserID = ur.UserID
LEFT JOIN Sys_Role r
ON ur.RoleID = r.RoleID
SELECT
c.Name AS 用户组名称
,a.RealName AS 用户名
,MAX(CASE WHEN d.LogType=0 THEN d.LogTime END) AS 查看时间
,SUM(CASE WHEN d.LogType=0 THEN d.CheckCount ELSE 0 END) AS 查看次数
,MAX(CASE WHEN d.LogType=1 THEN d.LogTime END) AS 回复时间
,SUM(CASE WHEN d.LogType=1 THEN d.CheckCount ELSE 0 END) AS 回复次数
FROM Ucf_User AS a
INNER JOIN Sys_UserRole AS b ON a.Ucf_UserID = b.UserID
INNER JOIN Sys_Role AS c ON c.RoleID = b.RoleID
INNER JOIN Pub_OperateLog AS d ON d.Ucf_UserID=a.Ucf_UserID
GROUP BY c.Name,a.RealName