Помогите с запросом с использовнием group by

Bombardier
Дата: 23.02.2007 17:54:13
Выполняю следующий запрос под Oracle 10g:
select t3.nadvid "Отдел",
       t3.nazva,
       t1.usluga_id,
       t1.nazva,
       sum(t1.kolvo),
       sum(t2.sebestoimost)
              from zadaniya_all t1, uslugi t2, vidi_uslug t3
              where t2.id=t1.usluga_id and t3.id=t2.vid_uslugi_id and t1.done>0
              and t1.data_spisaniya>='23.09.2006' and t1.data_spisaniya<'24.02.2007'
              group by t3.nadvid,t3.nazva, t1.usluga_id, t1.nazva

Но не происходит группировки по Отделу.
Под Oracle 9i все работает нормально. Может это из-за того, что в 10-ке group by уже не выполняет функции order by?!
Как разрешить проблему?
Благодарю.
Bombardier
Дата: 23.02.2007 17:58:18
Все, спасибо! Я разобрался.
В Oracle 10g необходимо дописать
order by t3.nadvid,t3.nazva, t1.usluga_id, t1.nazva
dmidek
Дата: 23.02.2007 18:17:46
Кстати в девятке тоже.
Рассчитывать на сортировку с помошью group by нельзя.
Stepan_mk
Дата: 23.02.2007 18:18:22
Чё-то я не понял у Вас не происходла группировка или сортировка?
Group by не гарантирует сортировки и в 9-ке также.
Elic
Дата: 24.02.2007 12:35:50
Bombardier
Может это из-за того, что в 10-ке group by уже не выполняет функции order by?!
Таких функций никогда не было! STFF Сортировка с GROUP BY
Stax.
Дата: 24.02.2007 15:30:42
Elic
Bombardier
Может это из-за того, что в 10-ке group by уже не выполняет функции order by?!
Таких функций никогда не было! STFF Сортировка с GROUP BY

про НИКОГДА вопрос спорный,
не хочу дискутировать, счас это неактуально,
надо указывать order by

имхо
раньше (6-7) это было необязательно но мож и желательно

вот пример отсканированый, 1997 Oracle-8
41010RU
Издание 1.1
М06585-RU
написано четко изменить порядок можно order by,
а если мне не надо менять то и нет order by

зы
в семерке
про group by
            *  Шаг  2  сортирует  строки,  возвращенные  шагом  3, чтобы
вычислить среднее, минимальное и максимальное значения
SAL.
......
stax
Elic
Дата: 24.02.2007 18:16:41
Stax.
Elic
group by уже не выполняет функции order by?!
Таких функций никогда не было! STFF Сортировка с GROUP BY
про НИКОГДА вопрос спорный,
не хочу дискутировать, счас это неактуально,
надо указывать order by

имхо
раньше (6-7) это было необязательно но мож и желательно

вот пример отсканированый, 1997 Oracle-8
написано четко изменить порядок можно order by,
а если мне не надо менять то и нет order by
Знаешь, Станислав, честное слово, ты меня уже заколебал с этим.
Настоящий специалист должен разрешать противоречия в небезгрешной документации и видеть соль. RTFM Oracle7 Server SQL Reference Manual: ORDER BY Clause (FAQ)
Stax.
Дата: 24.02.2007 18:37:20
Elic
Знаешь, Станислав, честное слово, ты меня уже заколебал с этим.
Настоящий специалист должен разрешать противоречия в небезгрешной документации и видеть соль. RTFM Oracle7 Server SQL Reference Manual: ORDER BY Clause (FAQ)

Взаимно, только не надо про грешную документацию

Семерка и девятка две большие разницы

ОЧЕНЬ часто в семерке для вызова неявной сортировки использовались
group by или скажем дистинкт (не говорю уже о индексе)

.......
stax
dmidek
Дата: 24.02.2007 18:56:21
Stax.
Elic
Знаешь, Станислав, честное слово, ты меня уже заколебал с этим.
Настоящий специалист должен разрешать противоречия в небезгрешной документации и видеть соль. RTFM Oracle7 Server SQL Reference Manual: ORDER BY Clause (FAQ)

Взаимно, только не надо про грешную документацию

Семерка и девятка две большие разницы

ОЧЕНЬ часто в семерке для вызова неявной сортировки использовались
group by или скажем дистинкт (не говорю уже о индексе)

.......
stax


Stax, а какая разница ?
Про DISTINCT в десятке например Oracle написал отдельный документ.
Его идею можно выразить так "Раньше Вы, нехорошие, пользовались
дистинктом для сортировки. Это было очень грязно и недокументировано,
но по меньшей мере давало верный результат. А в десятке - хана. DISTINCT больше не сортирует." :-)

Разве в семерке не такой же подтекст этих как Вы сами говорите
"неявных" сортировок ?
Stax.
Дата: 24.02.2007 19:22:18
dmidek

Stax, а какая разница ?
Про DISTINCT в десятке например Oracle написал отдельный документ.
Его идею можно выразить так "Раньше Вы, нехорошие, пользовались
дистинктом для сортировки. Это было очень грязно и недокументировано,
но по меньшей мере давало верный результат. А в десятке - хана. DISTINCT больше не сортирует." :-)

Разве в семерке не такой же подтекст этих как Вы сами говорите
"неявных" сортировок ?

имхо

Разница БОЛЬШАЯ в шестерке и семерке этим активно пользовались,
в восьмерке уже не так сильно,
в девятке не надо этого делать


я не говорю что этим пользовались "настоящие специалисты",
но обычные смертные запросто

посмотрите старые скрипты, много вы видели примеров где
ОДНОВРЕМЕННО есть group by и order by,
я лично в доке такое встречал редко,
чтоб побороть нлс сортировку чего токо не придумывали в group by

елементарный пример прономеровать записи в семерке
SQL> select rownum,deptno from (select * from dept order by deptno)
  2  /

   ROWNUM    DEPTNO
--------- ---------
        1        10
        2        20
        3        30
        4        40

зы
так как и пользовались хинтом индекс для быстрого доступа к "первым" строкам
......
stax