Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Select / 8 сообщений из 8, страница 1 из 1
08.08.2021, 17:48
    #40089488
chris0609
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select
Всем добрый вечер, прошу помочь с такой задачей:
Нужно вывести в котором часу за одни сутки у каждого человека было максимальное значение колонки "D"
...
Рейтинг: 0 / 0
08.08.2021, 19:45
    #40089537
UDW
UDW
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select
Рекомендую познакомиться с функцией extract().
...
Рейтинг: 0 / 0
08.08.2021, 20:18
    #40089542
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select
UDW
Рекомендую познакомиться с функцией extract().
Дебильный совет.
...
Рейтинг: 0 / 0
08.08.2021, 21:00
    #40089546
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WITH T AS (
           SELECT  B,
                   TRUNC(A,'HH') HOUR,
                   MAX(D) MAX_D
             FROM  TBL
             GROUP BY B,
                      TRUNC(A,'HH')
          )
SELECT  B,
        TRUNC(HOUR) DAY,
        MAX(HOUR) KEEP(DENSE_RANK LAST ORDER BY MAX_D) HOUR,
        MAX(MAX_D) MAX_D
  FROM  T
  GROUP BY B,
           TRUNC(HOUR)
/




Но это не учитывает "ничью" - за одни сутки у человека было несколько часов когда достигнуто максимальное значение колонки "D" и выводит последний такой час за эти сутки. Если надо все такие часы то:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WITH T AS (
           SELECT  B,
                   TRUNC(A,'HH') HOUR,
                   MAX(D) MAX_D,
                   DENSE_RANK() OVER(PARTITION BY B,TRUNC(TRUNC(A,'HH')) ORDER BY MAX(D) DESC) DRNK
             FROM  TBL
             GROUP BY B,
                      TRUNC(A,'HH')
          )
SELECT  B,
        TRUNC(HOUR) DAY,
        HOUR,
        MAX_D
  FROM  T
  WHERE DRNK = 1
/



SY.
...
Рейтинг: 0 / 0
09.08.2021, 11:48
    #40089662
chris0609
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select
SY,

Спасибо большое, а как сюда добавить колонку 'C' с теми же значениями , где 'D' максимум

WITH T AS (
SELECT B,
TRUNC(A,'HH') HOUR,
MAX(D) MAX_D
FROM TBL
GROUP BY B,
TRUNC(A,'HH')
)
SELECT B,
TRUNC(HOUR) DAY,
MAX(HOUR) KEEP(DENSE_RANK LAST ORDER BY MAX_D) HOUR,
MAX(MAX_D) MAX_D
FROM T
GROUP BY B,
TRUNC(HOUR)
...
Рейтинг: 0 / 0
09.08.2021, 12:23
    #40089674
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select
chris0609
SY,

Спасибо большое, а как сюда добавить колонку 'C' с теми же значениями , где 'D' максимум

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
WITH T AS (
           SELECT  B,
                   TRUNC(A,'HH') HOUR,
                   MAX(D) MAX_D
             FROM  TBL
             GROUP BY B,
                      TRUNC(A,'HH')
          )
SELECT  B,
        TRUNC(HOUR) DAY,
        MAX(HOUR) KEEP(DENSE_RANK LAST ORDER BY MAX_D) HOUR,
        MAX(MAX_D) MAX_D
  FROM  T
  GROUP BY B,
           TRUNC(HOUR)

Для оформления кода используйте, пожалуйста, тэг SRC.
...
Рейтинг: 0 / 0
09.08.2021, 13:41
    #40089686
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select
chris0609

Спасибо большое, а как сюда добавить колонку 'C' с теми же значениями , где 'D' максимум


Никак, если только у человека гарантированно не более одной строки в час. Если да, то и GROUP BY не нужен:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH T AS (
           SELECT  T.*,
                   DENSE_RANK() OVER(PARTITION BY B,TRUNC(A) ORDER BY D DESC) DRNK -- или ROW_NUMBER если не учитывать "ничью"
             FROM  TBL T
          )
SELECT  A,
        B,
        C,
        D
  FROM  T
  WHERE DRNK = 1
/



SY.
...
Рейтинг: 0 / 0
09.08.2021, 15:31
    #40089714
chris0609
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select
SY,

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


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