Гость
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS. Помогите найти максимум / 14 сообщений из 14, страница 1 из 1
16.08.2016, 15:15
    #39292659
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Добрый день.

Понимаю, что вопрос простой, но голову сломал.

Есть таблица (приложение 1).

Мне нужно посчитать максимум уникальных id по каждому дню.

Я могу посчитать количество уникальных id по каждому времени, но это и ребенок сможет.
А вот по дню считать не хочет.

Делаю три группы. Считаю по времени уникальные по времени.

Пытаюсь посчитать максимум по уникальным по группе времени и получаю ошибку о недопустимости агрегатной функции.

Формула =Max(CountDistinct(Fields!id.Value)) дает общее количество уникальных за день.
Формула =Max(CountDistinct(Fields!id.Value), "Время") (где "Время" - это имя группы) дает ошибку по недопустимости параметра агрегатной функции

Подскажите пожалуйста, как решить проблему?
...
Рейтинг: 0 / 0
16.08.2016, 15:16
    #39292660
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Количество уникальных id по времени
...
Рейтинг: 0 / 0
16.08.2016, 15:17
    #39292661
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
А мне нужно в таком виде



Заранее спасибо.
...
Рейтинг: 0 / 0
17.08.2016, 11:29
    #39293122
Студент123.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Fotoview,

А что мешает сразу получить в DataSet нужный вам результат по средством запроса? или детализация тоже нужна?
...
Рейтинг: 0 / 0
17.08.2016, 13:54
    #39293283
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Студент123.Fotoview,

А что мешает сразу получить в DataSet нужный вам результат по средством запроса? или детализация тоже нужна?


Мешает незнание как это сделать.


SELECT Дата AS Дата,
COUNT(DISTINCT id) AS "ВСЕГО"
FROM [table]
GROUP by Дата
Order by Дата


Как теперь сюда прикрутить максимум этого "ВСЕГО" по дням недели?
...
Рейтинг: 0 / 0
17.08.2016, 13:55
    #39293286
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Точнее

SELECT Время AS Время,
COUNT(DISTINCT id) AS "ВСЕГО"
FROM [table]
GROUP by Время
Order by Время
...
Рейтинг: 0 / 0
17.08.2016, 14:42
    #39293320
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Пришел в итоге к следующему


SELECT

DISTINCT DATEPART(dw,День) AS День,

(SELECT top 1 COUNT(DISTINCT id) AS "Максимум"
FROM table WHERE
GROUP by Время
Order by Максимум desc) As MAX1


FROM [table]


Здесь по каждому дню одинаковое значение, т.е. нужно поставить условие (выделил жирным). Вот это условие не могу придумать. Подскажите пожалуйста.
...
Рейтинг: 0 / 0
17.08.2016, 14:44
    #39293323
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Т.е. как день засунуть в условие???
...
Рейтинг: 0 / 0
17.08.2016, 16:07
    #39293397
Студент123.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
/Мне нужно посчитать максимум уникальных id по каждому дню....

Из Вашего примере уникальных id за один день "Понедельник" будет 5, я так понял что время тоже нужно учитывать.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Declare @Temp table (  x_Day  varchar(24)
                     , x_Time time(0) 
					 , Id     int)
Insert into @Temp
      select 'Понедельник', '15:00', 2
Union select 'Понедельник', '15:00', 1
Union select 'Понедельник', '15:00', 2
Union select 'Понедельник', '15:00', 0
Union select 'Понедельник', '15:00', 4
Union select 'Понедельник', '16:00', 2
Union select 'Понедельник', '16:00', 1
Union select 'Понедельник', '16:00', 2
Union select 'Понедельник', '17:00', 1
Union select 'Понедельник', '17:00', 4
Union select 'Понедельник', '17:00', 3
Union select 'Понедельник', '17:00', 4

Union select 'Вторник', '13:00', 1
Union select 'Вторник', '13:00', 2
Union select 'Вторник', '13:00', 3
Union select 'Вторник', '13:00', 4
Union select 'Вторник', '13:00', 5
Union select 'Вторник', '13:00', 8
Union select 'Вторник', '13:00', 1
Union select 'Вторник', '13:00', 2
Union select 'Вторник', '17:00', 1
Union select 'Вторник', '17:00', 4
Union select 'Вторник', '17:00', 3
Union select 'Вторник', '17:00', 4

Select s.x_Day
     , max(s.Max_count) as Max_count
from ( Select x_Day
            , x_Time
			, count(distinct Id) as Max_count
       from @Temp
       Group by x_Day
              , x_Time )s
Group by s.x_Day
...
Рейтинг: 0 / 0
17.08.2016, 16:30
    #39293414
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Студент123.,

Огромное спасибо.

Принцип понятен. У меня тонкость только в том, что день недели и время берется из одного поля "Дата".

Я попробовал переделать ваш скрипт

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Select s.DATEPART(dw,[audit_date])
     , max(s.Max_count) as Max_count
from ( Select DATEPART(dw,[audit_date])
            , CAST([audit_date] AS time)
			, count(distinct [assyst_usr_id]) as Max_count
       from [assystdblicense].[dbo].[Test_table]
       Group by DATEPART(dw,[audit_date])
              , CAST([audit_date] as time)) s
Group by s.DATEPART(dw,[audit_date])



Мне выдает следующую ошибку

Код: plaintext
1.
2.
3.
Msg 8155, Level 16, State 2, Line 9
No column name was specified for column 1 of 's'.
Msg 8155, Level 16, State 2, Line 9
No column name was specified for column 2 of 's'.

Т.е. где-то я в синтаксисе наврал...
...
Рейтинг: 0 / 0
17.08.2016, 16:40
    #39293419
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Студент123.
Из Вашего примере уникальных id за один день "Понедельник" будет 5, я так понял что время тоже нужно учитывать.


Не совсем, мне нужен максимум уникальных id в единицу времени.

Или другими словами. В 22:00 было 4 уникальных ID, В 23:00 было 5 уникальных ID, в 21:00 был 1 уникальный ID.
Мне нужен максимум за день. Т.е. не сколько уникальных ID было за день, а максимум из тех которые были в отсечки времени. Т.е. 23:00 и 5 уникальных.
...
Рейтинг: 0 / 0
17.08.2016, 17:12
    #39293444
Студент123.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Оно?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Declare @Temp table (  x_Day  DateTime
                     , Id     int)
Insert into @Temp
      select '2016-01-04T15:00:00.000', 2
Union select '2016-01-04T15:00:00.000', 1
Union select '2016-01-04T15:00:00.000', 2
Union select '2016-01-04T15:00:00.000', 0
Union select '2016-01-04T15:00:00.000', 4
Union select '2016-01-04T16:00:00.000', 2
Union select '2016-01-04T16:00:00.000', 1
Union select '2016-01-04T16:00:00.000', 2
Union select '2016-01-04T17:00:00.000', 1
Union select '2016-01-04T17:00:00.000', 4
Union select '2016-01-04T17:00:00.000', 3
Union select '2016-01-04T17:00:00.000', 4

Union select '2016-01-05T13:00:00.000', 1
Union select '2016-01-05T13:00:00.000', 2
Union select '2016-01-05T13:00:00.000', 3
Union select '2016-01-05T13:00:00.000', 4
Union select '2016-01-05T13:00:00.000', 5
Union select '2016-01-05T13:00:00.000', 8
Union select '2016-01-05T13:00:00.000', 1
Union select '2016-01-05T13:00:00.000', 2
Union select '2016-01-05T17:00:00.000', 1
Union select '2016-01-05T17:00:00.000', 4
Union select '2016-01-05T17:00:00.000', 3
Union select '2016-01-05T17:00:00.000', 4

Select  s.Dates
      , datename(dw,s.Dates)
      , max(s.Max_count) as Max_count
from ( Select x_Day
            , convert( varchar(10), x_Day, 102) as [Dates]
            , count(distinct Id) as Max_count
       from @Temp
       Group by x_Day
              , convert( varchar(10), x_Day, 114))s
Group by s.Dates
      , datename(dw,s.Dates)
Order by s.Dates
...
Рейтинг: 0 / 0
17.08.2016, 17:29
    #39293466
Студент123.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Ваш вариант, пора бежать...


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Use assystdblicense

Select  s.Dates
      , datename(dw,s.Dates)
      , max(s.Max_count) as Max_count
from ( Select audit_date
            , convert( varchar(10), audit_date, 102) as [Dates]
            , count(distinct assyst_usr_id) as Max_count
       from Test_table
       Group by audit_date
              , convert( varchar(10), audit_date, 114))s
Group by s.Dates
      , datename(dw,s.Dates)
Order by s.Dates
...
Рейтинг: 0 / 0
17.08.2016, 17:37
    #39293472
Fotoview
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSRS. Помогите найти максимум
Студент123.Оно?


Именно, спасибо огромное!!!
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS. Помогите найти максимум / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]