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

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

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

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

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

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

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

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

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



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

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

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


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


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


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

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


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
SSRS. Помогите найти максимум
    #39293323
Fotoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. как день засунуть в условие???
...
Рейтинг: 0 / 0
SSRS. Помогите найти максимум
    #39293397
Студент123.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/Мне нужно посчитать максимум уникальных 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
SSRS. Помогите найти максимум
    #39293414
Fotoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Студент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
SSRS. Помогите найти максимум
    #39293419
Fotoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Студент123.
Из Вашего примере уникальных id за один день "Понедельник" будет 5, я так понял что время тоже нужно учитывать.


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

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

Код: 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
SSRS. Помогите найти максимум
    #39293466
Студент123.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваш вариант, пора бежать...


Код: 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
SSRS. Помогите найти максимум
    #39293472
Fotoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Студент123.Оно?


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


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