powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
10 сообщений из 10, страница 1 из 1
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564308
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Версия:
авторOracle Database 11g Release 11.2.0.2.0 - 64bit Production

Запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT 
to_number(to_char(INSERTTS, 'ddmmyyyyhh24'))
FROM M_P
WHERE INSERTTS >= TO_TIMESTAMP('03-11-2017 18.00.00','dd-mm-yyyy hh24:mi:ss')
AND INSERTTS <= TO_TIMESTAMP('04-11-2017 02.00.00','dd-mm-yyyy hh24:mi:ss')
AND s_id=34
--GROUP BY (to_number(to_char(INSERTTS, 'ddmmyyyyhh24')) )
ORDER BY INSERTTS ASC;



Предоставляет выборку типа:
автор1 311201718
2 311201718
3 311201719
4 311201719
5 311201719
6 311201719
7 311201719
....
35 311201722
36 311201722
37 311201722
...
Тут 311201718 - это дата 03.11.2017 18:0х:хх, усечённая до часов. Мне надо сгруппировать, а в конечном итоге подсчитать количество строк для каждого часа в указанном диапазоне времени.

Т.е. ожидаемый результат:
автор1 2
2 5
3 3
...

Но если использовать:
Код: plsql
1.
GROUP BY (to_number(to_char(INSERTTS, 'ddmmyyyyhh24')) )


То появляется ошибка:
авторORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Action:
Error at Line: 8 Column: 9
Не хочет группировать "на лету" видимо.
Как решить данную проблему?
Спасибо!
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564312
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtyts,

1) trunc(INSERTTS,'hh24')
2) to_char(INSERTTS, 'yyyymmddhh24')

.....
stax
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564319
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtyts,

Ругается на группировку, потому что у тебя ордер идёт по выражению, которое не входит в группировку, т.е. по сути ошибка в строке:
Код: plsql
1.
ORDER BY INSERTTS ASC;
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564320
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoortyts,

Ругается на группировку, потому что у тебя ордер идёт по выражению, которое не входит в группировку, т.е. по сути ошибка в строке:
Код: plsql
1.
ORDER BY INSERTTS ASC;


Подмени на

Код: plsql
1.
ORDER BY  to_number(to_char(INSERTTS, 'ddmmyyyyhh24')) ASC;
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564321
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtyts,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> ed
Wrote file afiedt.buf

  1  with m_p (insertts) as (
  2  select TO_date('03-11-2017 18.05.00','dd-mm-yyyy hh24:mi:ss') from dual union all
  3  select TO_date('03-11-2017 18.15.00','dd-mm-yyyy hh24:mi:ss') from dual union all
  4  select TO_date('04-11-2017 01.05.00','dd-mm-yyyy hh24:mi:ss') from dual union all
  5  select TO_date('04-11-2017 02.00.00','dd-mm-yyyy hh24:mi:ss') from dual
  6  )
  7  select to_char(INSERTTS,'hh24') h,count(*) cc
  8  FROM M_P
  9  WHERE INSERTTS >= TO_TIMESTAMP('03-11-2017 18.00.00','dd-mm-yyyy hh24:mi:ss')
 10  AND INSERTTS <= TO_TIMESTAMP('04-11-2017 02.00.00','dd-mm-yyyy hh24:mi:ss')
 11  group by to_char(INSERTTS,'hh24')
 12* order by 1
SQL> /

H          CC
-- ----------
01          1
02          1
18          2




......
stax
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564338
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Код: plsql
1.
set sqlnumber off
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564360
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadStax,

Код: plsql
1.
set sqlnumber off



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL) set sqln off
SQL) set sqlp "SQL) "
SQL) ed
Wrote file afiedt.buf

  1  select 1 a
  2  from dual
  3* order by a
SQL) /

         A
----------
         1

SQL)



Вы конечно правы, постить надо без номеров строк, леньтяйство (да и настроение швах)

.....
stax
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564366
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это SQL*Plus, то добавь эту инструкцию в glogin.sql.
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564397
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadЕсли это SQL*Plus, то добавь эту инструкцию в glogin.sql.

не паше
но и неудобно, привык
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
sql> ed
Wrote file afiedt.buf

  1    select
  2    1
  3    from
  4    dual
  5* union all
sql> 



....
stax
...
Рейтинг: 0 / 0
не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
    #39564445
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo Ругается на группировку, потому что у тебя ордер идёт по выражению, которое не входит в группировку
Ё моё, вот я балбес.
Работает.
Спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / не группирует по усечённой дате --- ORA-00979: not a GROUP BY expression
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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