Part of the Ektron Metrics Script, this query will help with metrics to give you an idea of how often your users login.
SET NOCOUNT ON DECLARE @month INT ,@year INT ,@start_date DATETIME ,@end_date DATETIME SET @month = ( SELECT CASE WHEN MONTH(GETDATE()) = '1' THEN '12' ELSE MONTH(GETDATE()) - 1 END ) --SELECT @month AS Month_To_Report SET @year = ( SELECT CASE WHEN MONTH(GETDATE()) = '1' THEN YEAR(GETDATE()) - 1 ELSE YEAR(GETDATE()) END ) --SELECT @YEAR AS Year_To_Report SET @start_date = CAST(CAST(@month AS VARCHAR) + '/01/' + CAST(@year AS VARCHAR) AS DATETIME) -- @start_date AS Start_Date SET @end_date = ( SELECT DATEADD(s, - 1, DATEADD(mm, DATEDIFF(m, 0, @start_date) + 1, 0)) ) --SELECT @end_date AS End_Date --SELECT (CONVERT(VARCHAR(8), @start_date, 1) + ' - ' + CONVERT(VARCHAR(8), @end_date, 1)) AS 'Date Range' SELECT DISTINCT ug.usergroup_name AS "Ektron User Group" ,( SELECT COUNT(*) FROM user_to_group_tbl utgt1 INNER JOIN usergroups ON utgt.usergroup_id = usergroups.usergroup_id INNER JOIN users u ON u.user_id = utgt1.user_id WHERE utgt.usergroup_id = utgt1.usergroup_id AND ( u.date_created <= @end_date OR u.date_created IS NULL ) ) AS "Total Users" ,( SELECT COUNT(*) FROM user_to_group_tbl utgt1 INNER JOIN usergroups ON utgt.usergroup_id = usergroups.usergroup_id INNER JOIN users u ON u.user_id = utgt1.user_id WHERE utgt.usergroup_id = utgt1.usergroup_id AND ( u.date_created <= @end_date OR u.date_created IS NULL ) AND u.[user_deleted] = 0 ) AS "Account Status - Active" ,( SELECT COUNT(*) FROM user_to_group_tbl utgt1 INNER JOIN usergroups ON utgt.usergroup_id = usergroups.usergroup_id INNER JOIN users u ON u.user_id = utgt1.user_id WHERE utgt.usergroup_id = utgt1.usergroup_id AND ( u.date_created >= @start_date OR u.date_created IS NULL ) AND ( u.date_created <= @end_date OR u.date_created IS NULL ) AND u.[user_deleted] = 0 ) AS "Registered Witin The Month" ,( SELECT COUNT(*) FROM user_to_group_tbl utgt1 INNER JOIN usergroups ON utgt.usergroup_id = usergroups.usergroup_id INNER JOIN users u ON u.user_id = utgt1.user_id WHERE utgt.usergroup_id = utgt1.usergroup_id AND ( u.date_created <= @end_date OR u.date_created IS NULL ) AND u.[user_deleted] = 0 AND convert(VARCHAR, LAST_LOGIN_DATE, 112) <= GETDATE() - 120 ) AS "Login Status - <= 120" ,( SELECT COUNT(*) FROM user_to_group_tbl utgt1 INNER JOIN usergroups ON utgt.usergroup_id = usergroups.usergroup_id INNER JOIN users u ON u.user_id = utgt1.user_id WHERE utgt.usergroup_id = utgt1.usergroup_id AND ( u.date_created <= @end_date OR u.date_created IS NULL ) AND u.[user_deleted] = 0 AND convert(VARCHAR, LAST_LOGIN_DATE, 112) <= GETDATE() - 90 ) AS "Login Status - <= 90" ,( SELECT COUNT(*) FROM user_to_group_tbl utgt1 INNER JOIN usergroups ON utgt.usergroup_id = usergroups.usergroup_id INNER JOIN users u ON u.user_id = utgt1.user_id WHERE utgt.usergroup_id = utgt1.usergroup_id AND ( u.date_created <= @end_date OR u.date_created IS NULL ) AND u.[user_deleted] = 0 AND convert(VARCHAR, LAST_LOGIN_DATE, 112) <= GETDATE() - 30 ) AS "Login Status - <= 30" FROM user_to_group_tbl utgt INNER JOIN usergroups ug ON utgt.usergroup_id = ug.usergroup_id ORDER BY "Ektron User Group"
Originally Posted on May 6, 2013
Last Updated on October 26, 2015
Last Updated on October 26, 2015
All information on this site is shared with the intention to help. Before any source code or program is ran on a production (non-development) system it is suggested you test it and fully understand what it is doing not just what it appears it is doing. I accept no responsibility for any damage you may do with this code.