Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Процент с группированием  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
Здравствуйте!
В отчете необходимо вывести процент выполнения в своей группе
Попыталась выполнить так
Выходит ошибка "subquery returned more than 1 value. this is not permitted when the subquery follows..."

DECLARE @Group as INT
SET @Group = (SELECT COUNT(*) FROM [dbo].[PROBSUMMARYM1]
WHERE INF_EXECUTE_TIME IS NOT NULL
AND ASSIGNEE_NAME IS NOT NULL
GROUP BY ASSIGNEE_NAME,ASSIGNMENT)


select DISTINCT ASSIGNMENT, ASSIGNEE_NAME,
CAST(AVG(DATEDIFF(MINUTE, INF_TOWORK_TIME, INF_EXECUTE_TIME))/1440 as VARCHAR(10)) +
':'+ CONVERT(VARCHAR, CAST(AVG(CAST(CAST (INF_EXECUTE_TIME as datetime) - CAST( INF_TOWORK_TIME as datetime)as float )) as datetime),108) AS TM,
num = Count(*) ,

CAST((CAST((1.0 *COUNT(*) *100 / @Group ) AS NUMERIC(36,2) ) ) AS NUMERIC(36,2)) as 'Процент работы каждого в своей группе'

FROM [dbo].[PROBSUMMARYM1]
WHERE INF_EXECUTE_TIME IS NOT NULL
and (OPEN_TIME >= (@StartDate) and OPEN_TIME < (@EndDate + 1))
AND ASSIGNEE_NAME IS NOT NULL
GROUP BY ASSIGNEE_NAME,ASSIGNMENT

К сообщению приложен файл. Размер - 13Kb
18 май 17, 07:56    [20491597]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Добрый Э - Эх
Guest
Marin_1a,

[количество выполненных инцидентов] / sum([количество выполненных инцидентов]) over(partition by [наименование группы])

округлить, домножить на 100, пририровасть знак "%" по вкусу...
18 май 17, 08:04    [20491601]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
aleks2
Guest
Пишите красиво и будет вам щастье.
А то лепят фуфло на фуфло - аж смотреть противно. Еще жалуются.


select ASSIGNMENT, ASSIGNEE_NAME
     , CAST(AVG(DATEDIFF(MINUTE, INF_TOWORK_TIME, INF_EXECUTE_TIME))/1440 as VARCHAR(10)) 
       + ':'+ CONVERT(VARCHAR, CAST(AVG(CAST(CAST (INF_EXECUTE_TIME as datetime) - CAST( INF_TOWORK_TIME as datetime)as float )) as datetime),108) AS TM
     , num = Count(*) 
     , CAST( (COUNT(*) * 100.0 / count(*) over(partition by ASSIGNMENT) ) AS NUMERIC(36,2) ) as 'Процент работы каждого в своей группе'
  FROM [dbo].[PROBSUMMARYM1] 
  WHERE INF_EXECUTE_TIME IS NOT NULL and (OPEN_TIME >= (@StartDate) and OPEN_TIME < (@EndDate + 1)) AND ASSIGNEE_NAME IS NOT NULL
  GROUP BY ASSIGNMENT, ASSIGNEE_NAME  
18 май 17, 08:11    [20491609]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
aleks2
Пишите красиво и будет вам щастье.
А то лепят фуфло на фуфло - аж смотреть противно. Еще жалуются.


select ASSIGNMENT, ASSIGNEE_NAME
     , CAST(AVG(DATEDIFF(MINUTE, INF_TOWORK_TIME, INF_EXECUTE_TIME))/1440 as VARCHAR(10)) 
       + ':'+ CONVERT(VARCHAR, CAST(AVG(CAST(CAST (INF_EXECUTE_TIME as datetime) - CAST( INF_TOWORK_TIME as datetime)as float )) as datetime),108) AS TM
     , num = Count(*) 
     , CAST( (COUNT(*) * 100.0 / count(*) over(partition by ASSIGNMENT) ) AS NUMERIC(36,2) ) as 'Процент работы каждого в своей группе'
  FROM [dbo].[PROBSUMMARYM1] 
  WHERE INF_EXECUTE_TIME IS NOT NULL and (OPEN_TIME >= (@StartDate) and OPEN_TIME < (@EndDate + 1)) AND ASSIGNEE_NAME IS NOT NULL
  GROUP BY ASSIGNMENT, ASSIGNEE_NAME  



Результат при выходе такой...

К сообщению приложен файл. Размер - 8Kb
18 май 17, 08:15    [20491611]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
aleks2
Guest
Marin_1a
aleks2
Пишите красиво и будет вам щастье.
А то лепят фуфло на фуфло - аж смотреть противно. Еще жалуются.


select ASSIGNMENT, ASSIGNEE_NAME
     , CAST(AVG(DATEDIFF(MINUTE, INF_TOWORK_TIME, INF_EXECUTE_TIME))/1440 as VARCHAR(10)) 
       + ':'+ CONVERT(VARCHAR, CAST(AVG(CAST(CAST (INF_EXECUTE_TIME as datetime) - CAST( INF_TOWORK_TIME as datetime)as float )) as datetime),108) AS TM
     , num = Count(*) 
     , CAST( (COUNT(*) * 100.0 / count(*) over(partition by ASSIGNMENT) ) AS NUMERIC(36,2) ) as 'Процент работы каждого в своей группе'
  FROM [dbo].[PROBSUMMARYM1] 
  WHERE INF_EXECUTE_TIME IS NOT NULL and (OPEN_TIME >= (@StartDate) and OPEN_TIME < (@EndDate + 1)) AND ASSIGNEE_NAME IS NOT NULL
  GROUP BY ASSIGNMENT, ASSIGNEE_NAME  



Результат при выходе такой...


Клиент недоволен?
Дык допили.
Откуда я знаю кто у тя группа а кто член.
18 май 17, 08:20    [20491615]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
aleks2
Marin_1a
пропущено...



Результат при выходе такой...


Клиент недоволен?
Дык допили.
Откуда я знаю кто у тя группа а кто член.


упс..забыла указать. Извините)
18 май 17, 08:21    [20491618]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
Добрый Э - Эх
Marin_1a,

[количество выполненных инцидентов] / sum([количество выполненных инцидентов]) over(partition by [наименование группы])

округлить, домножить на 100, пририровасть знак "%" по вкусу...


Подскажите пожалуйста что я делаю не так ?

select DISTINCT ASSIGNMENT, ASSIGNEE_NAME,
CAST(AVG(DATEDIFF(MINUTE, INF_TOWORK_TIME, INF_EXECUTE_TIME))/1440 as VARCHAR(10)) +
':'+ CONVERT(VARCHAR, CAST(AVG(CAST(CAST (INF_EXECUTE_TIME as datetime) - CAST( INF_TOWORK_TIME as datetime)as float )) as datetime),108) AS TM,
num = Count(*) ,

Count(*) /SUM ( Count(*)) OVER (PARTITION BY ASSIGNMENT)*100.0

FROM [dbo].[PROBSUMMARYM1]
WHERE INF_EXECUTE_TIME IS NOT NULL
and (OPEN_TIME >= (@StartDate) and OPEN_TIME < (@EndDate + 1))
AND ASSIGNEE_NAME IS NOT NULL
GROUP BY ASSIGNEE_NAME,ASSIGNMENT

К сообщению приложен файл. Размер - 7Kb
18 май 17, 08:33    [20491638]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Добрый Э - Эх
Guest
Marin_1a
Подскажите пожалуйста что я делаю не так ?
не приводишь типы данных...
18 май 17, 08:37    [20491641]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
aleks2
Guest
Marin_1a

Подскажите пожалуйста что я делаю не так ?


Фсе.
Головой работать надо. А не жопой думать.

Чо, не судьба написать

select ASSIGNMENT, ASSIGNEE_NAME
     , CAST(AVG(DATEDIFF(MINUTE, INF_TOWORK_TIME, INF_EXECUTE_TIME))/1440 as VARCHAR(10)) 
       + ':'+ CONVERT(VARCHAR, CAST(AVG(CAST(CAST (INF_EXECUTE_TIME as datetime) - CAST( INF_TOWORK_TIME as datetime)as float )) as datetime),108) AS TM
     , num = Count(*) 
     , CAST( (COUNT(*) * 100.0 / count(*) over(partition by ASSIGNMENT) ) AS NUMERIC(36,2) ) as 'Процент работы каждого в своей группе'

   , [COUNT(*) ] = COUNT(*) 
  ,  [count(*) over(partition by ASSIGNMENT)] = count(*) over(partition by ASSIGNMENT)
  FROM [dbo].[PROBSUMMARYM1] 
  WHERE INF_EXECUTE_TIME IS NOT NULL and (OPEN_TIME >= (@StartDate) and OPEN_TIME < (@EndDate + 1)) AND ASSIGNEE_NAME IS NOT NULL
  GROUP BY ASSIGNMENT, ASSIGNEE_NAME  


И включить думалку? Если она есть.
18 май 17, 08:38    [20491643]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
aleks2
Marin_1a
Подскажите пожалуйста что я делаю не так ?


Фсе.
Головой работать надо. А не жопой думать.

Чо, не судьба написать

select ASSIGNMENT, ASSIGNEE_NAME
     , CAST(AVG(DATEDIFF(MINUTE, INF_TOWORK_TIME, INF_EXECUTE_TIME))/1440 as VARCHAR(10)) 
       + ':'+ CONVERT(VARCHAR, CAST(AVG(CAST(CAST (INF_EXECUTE_TIME as datetime) - CAST( INF_TOWORK_TIME as datetime)as float )) as datetime),108) AS TM
     , num = Count(*) 
     , CAST( (COUNT(*) * 100.0 / count(*) over(partition by ASSIGNMENT) ) AS NUMERIC(36,2) ) as 'Процент работы каждого в своей группе'

   , [COUNT(*) ] = COUNT(*) 
  ,  [count(*) over(partition by ASSIGNMENT)] = count(*) over(partition by ASSIGNMENT)
  FROM [dbo].[PROBSUMMARYM1] 
  WHERE INF_EXECUTE_TIME IS NOT NULL and (OPEN_TIME >= (@StartDate) and OPEN_TIME < (@EndDate + 1)) AND ASSIGNEE_NAME IS NOT NULL
  GROUP BY ASSIGNMENT, ASSIGNEE_NAME  


И включить думалку? Если она есть.



я не понимаю в чем смысл такой агрессии?
если помогаете обязательно унизить нужно?
спасибо
18 май 17, 08:41    [20491649]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Добрый Э - Эх
Guest
Marin_1a
я не понимаю в чем смысл такой агрессии?
если помогаете обязательно унизить нужно?
спасибо
не обрашай внимания на этого персонажа. это у него стандартная манера общения.

а себе на подумать выполни такой простой запросик:
select 1/2, 1/2.0, 1.0/2

надеюсь, станет понятно, где "собака порылась"...
18 май 17, 08:47    [20491661]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
aleks2
Guest
Добрый Э - Эх
Marin_1a
я не понимаю в чем смысл такой агрессии?
если помогаете обязательно унизить нужно?
спасибо
не обрашай внимания на этого персонажа. это у него стандартная манера общения.

а себе на подумать выполни такой простой запросик:
select 1/2, 1/2.0, 1.0/2

надеюсь, станет понятно, где "собака порылась"...


Ну, если уж ты взялся сопли вытирать, дык знай нет выражения "где собака порылась", есть выражение "где собака зарыта".

А собака зарыта в лени тредстартера.
18 май 17, 08:52    [20491673]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
Добрый Э - Эх
Marin_1a
я не понимаю в чем смысл такой агрессии?
если помогаете обязательно унизить нужно?
спасибо
не обрашай внимания на этого персонажа. это у него стандартная манера общения.

а себе на подумать выполни такой простой запросик:
select 1/2, 1/2.0, 1.0/2

надеюсь, станет понятно, где "собака порылась"...


Спасибо большущее!
Я разобралась)
18 май 17, 08:55    [20491680]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Добрый Э - Эх
Guest
aleks2
Ну, если уж ты взялся сопли вытирать, дык знай нет выражения "где собака порылась", есть выражение "где собака зарыта".

А собака зарыта в лени тредстартера.
выражение "собака порылась" потому и было мною взято в двойные кавычки, что его нет. Если ты этого не понял,то я не виноват, что печатные средства русского языка не обладают такой же высокой выразительностью, как устная речь... ;)
18 май 17, 08:58    [20491693]     Ответить | Цитировать Сообщить модератору
 Re: Процент с группированием  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Marin_1a ,
я бы вот так время для отображения форматировал
SELECT 
  t.[begin],
  t.[end],
  [tm] = CONVERT( VARCHAR, DATEDIFF( DAY, 0, CONVERT( DATE, ss.[time] ) ) ) + 'D' + CONVERT( VARCHAR, ss.[time], 108 )
FROM (
  VALUES
    ( DATEADD( MINUTE, -2, GETDATE() ), GETDATE() ),
    ( DATEADD( HOUR,   -1, GETDATE() ), GETDATE() ),
    ( DATEADD( DAY,    -1, GETDATE() ), GETDATE() )
  ) t( [begin], [end] )
  CROSS APPLY (
    SELECT
      [time] = [end] - [begin]
  ) ss
18 май 17, 09:26    [20491776]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить