как вырезать время из столбца даты и иметь уникальное количество пользователей на дату - PullRequest
0 голосов
/ 12 октября 2018

У меня есть таблица инцидентов, в которой слишком много столбцов.Я хочу запросить 3 из столбцов, DateTimeResolved, Team и Individual.Во-первых, я бы хотел исключить время из столбца DateTimeResolved, чтобы оставить дату.Затем я хотел бы знать, сколько человек (уникальное количество) из каждой команды разрешило инциденты с апреля 2017 года.

Можно ли это сделать?

У меня работают следующие запросы, но ониочевидно, нужно настроить, поскольку они не дают мне желаемого конечного результата.

select stat_datetimeresolved, resolvedbyteam, resolvedby 
from [dbo].[Incident]
where Stat_DateTimeResolved is not null
and Stat_DateTimeResolved >= '2017-04-01 00:00:00'
order by Stat_DateTimeResolved asc


select CAST(stat_datetimeresolved as date),
COUNT(resolvedby)
from [dbo].[Incident]
group by CAST(Stat_DateTimeResolved as DATE)
order by CAST(stat_datetimeresolved as DATE) asc

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы были близки;Вы можете добавить ключевое слово DISTINCT в COUNT, чтобы получить количество уникальных членов команды по дням.

SELECT CAST(stat_datetimeresolved as date) as DateResolved
, ResolvedByTeam
, COUNT(DISTINCT resolvedby) as ResolvedByCnt
FROM [dbo].[Incident]
 WHERE Stat_DateTimeResolved >= '20170401'
GROUP BY CAST(Stat_DateTimeResolved as DATE), ResolvedByTeam
ORDER BY CAST(stat_datetimeresolved as DATE) asc, ResolvedByTeam
0 голосов
/ 12 октября 2018

У вас есть несколько несовместимых запросов в вашем вопросе здесь.Я думаю, что вы на самом деле ищете:

Сколько членов каждой команды приняли решение каждый день с апреля 2017 года?

Чтобы сделать это, вы простонеобходимо вернуть уникальный список как Даты разрешения, команды, к которой принадлежит человек, так и кто на самом деле принял решение, а затем объединить:

with r as
(
    select distinct cast(stat_datetimeresolved as date) as DateResolved
                   ,ResolvedByTeam
                   ,ResolvedBy
    from [dbo].[Incident]
    where Stat_DateTimeResolved >= '20170401'  -- NULL check is redundant if you are filtering for a value
)
select DateResolved
      ,ResolvedByTeam
      ,count(ResolvedBy) as NumIndividualsMakingResolutions
from r
group by DateResolved
        ,ResolvedByTeam
order by DateResolved
        ,ResolvedByTeam;
...