not a GROUP BY expression

Meder
Дата: 31.05.2006 14:46:44
Здравствуйте

Имеется запрос вида:
select t2.code, t2.code_name, count(*), sum(t.chargeduration), (sum(t.chargeduration)/60)*[b]t2.mt_mn[/b]
from smaster.pps_03_2006_exp t, smaster.mn_codes t2
where instr(to_number(t.called_num),t2.code)=1 and t.outgoing_trunc in (160,161,165)
group by t2.code, t2.code_name

Соответсвенно появляется знакомая ошибка - "not a GROUP BY expression" из-за поля t2.mt_mn (выделено жирным шрифтом). Подозреваю это связано с тем что эти 2 таблицы t и t2 не связаны посредством ключевых полей. Как решить проблему подскажите: :(
dmidek
Дата: 31.05.2006 14:49:23
Meder
Здравствуйте

Имеется запрос вида:
select t2.code, t2.code_name, count(*), sum(t.chargeduration), (sum(t.chargeduration)/60)*[b]t2.mt_mn[/b]
from smaster.pps_03_2006_exp t, smaster.mn_codes t2
where instr(to_number(t.called_num),t2.code)=1 and t.outgoing_trunc in (160,161,165)
group by t2.code, t2.code_name

Соответсвенно появляется знакомая ошибка - "not a GROUP BY expression" из-за поля t2.mt_mn (выделено жирным шрифтом). Подозреваю это связано с тем что эти 2 таблицы t и t2 не связаны посредством ключевых полей. Как решить проблему подскажите: :(

Подозреваю, что это связано с тем, что t2.mt_mn не стоит в GROUP BY.
alex-ls
Дата: 31.05.2006 14:52:24
а группировку по этому столбцу сделать?
Meder
Дата: 31.05.2006 14:53:55
Прямо в точку. Благодарю
Setekh
Дата: 31.05.2006 15:06:07
Meder
Здравствуйте

Имеется запрос вида:
select t2.code, t2.code_name, count(*), sum(t.chargeduration), (sum(t.chargeduration)/60)*[b]t2.mt_mn[/b]
from smaster.pps_03_2006_exp t, smaster.mn_codes t2
where instr(to_number(t.called_num),t2.code)=1 and t.outgoing_trunc in (160,161,165)
group by t2.code, t2.code_name

Соответсвенно появляется знакомая ошибка - "not a GROUP BY expression" из-за поля t2.mt_mn (выделено жирным шрифтом). Подозреваю это связано с тем что эти 2 таблицы t и t2 не связаны посредством ключевых полей. Как решить проблему подскажите: :(

А если вспомнить математику то можно так:
select t2.code, t2.code_name, count(*), sum(t.chargeduration), (sum(t.chargeduration*t2.mt_mn)/60)
from smaster.pps_03_2006_exp t, smaster.mn_codes t2
where instr(to_number(t.called_num),t2.code)=1 and t.outgoing_trunc in (160,161,165)
group by t2.code, t2.code_name
dmidek
Дата: 31.05.2006 15:13:10
Setekh
А если вспомнить математику то можно так:


ИМХО лучше не вспоминать

select deptno, sum(sal)*comm
from scott.emp
group by deptno, comm
/
10
20
30
30 0
30 480000
30 625000
30 1750000

select deptno, sum(sal*comm)
from scott.emp
group by deptno
/
10
20
30 2855000

Как видите, результаты различны.
При этом, я не исключаю того, что автору нужен именно Ваш вариант ...
Setekh
Дата: 31.05.2006 15:22:57
dmidek
Как видите, результаты различны.
При этом, я не исключаю того, что автору нужен именно Ваш вариант ...

Судя по запросу, у него как раз таки результаты не будут отличаться ;)