-- Записываю скорее всего как архив. Чтоб было...
--Посмотреть на конкретный день
USE [AuditDB]
GO
SELECT *
FROM dbo._AuditTable
WHERE
YEAR(login_time) = '2010' and
MONTH (login_time) = '02' and
DAY (login_time) = '04'
--Помотреть распределение пользователей по БД
USE [AuditDB]
GO
SELECT database_name, nt_username, COUNT(*) AS COUNT
FROM dbo._AuditTable AT
GROUP BY database_name, nt_username
ORDER BY 1, COUNT(*)
--Просмотреть распределение по за определенный месяц
USE [AuditDB]
GO
DECLARE @d DATETIME;
DECLARE @curd DATETIME;
DECLARE @mind DATETIME;
DECLARE @maxd DATETIME;
SET @curd=GETDATE();
--Нужно указать первый день месяца
SET @d= '2010-02-01'
--первый день месяца
SET @mind = CAST(CONVERT(CHAR(6),@d,112)+'01' AS DATETIME)
SET @mind = CAST(CONVERT(CHAR(6),@d,112)+'01' AS DATETIME)
--последний день месяца
SET @maxd = DATEADD(DAY,-1, CONVERT(CHAR(6), DATEADD(MONTH,1,@d),112)+'01');
SELECT database_name, nt_username, COUNT(*) AS COUNT
FROM dbo._AuditTable AT
WHERE login_time between @mind and @maxd
GROUP BY database_name, nt_username
ORDER BY 1, COUNT(*)
--Просмотреть распределение за год по месяцам
USE [AuditDB]
GO
SELECT m, COUNT(*) FROM (
SELECT MONTH(login_time) m, nt_username, COUNT(DISTINCT nt_username) AS COUNT
FROM dbo._AuditTable AT
WHERE YEAR(login_time) = 2010
and database_name = UPPER('НУЖНАЯ_БД')
GROUP BY MONTH(login_time), nt_username) t
GROUP BY m
ORDER BY m
Комментариев нет:
Отправить комментарий