Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 вложенный запрос... или не вложенный  [new]
franck_f
Member

Откуда: Санкт-Петербург
Сообщений: 257
Добрый вечер.
Простите за возможную глупость, но я только начинаю знакомство с Оракл.
Задали задачку... а решения я сам придумать не могу...
помогите, если не сложно...

Есть запрос:
select substr(upper(t.lastname),1,1) as "1я буква",
       round(avg(e.examrating), 2) as "subject_id=1"       
  from bgi804.k_student t,
       bgi804.k_ege e
 where t.id = e.user_id
       and e.examrating > 0
       and e.subject_id=1
 group by substr(upper(t.lastname),1,1)
 order by substr(upper(t.lastname),1,1)
проблема в том, что надо выводить еще 3 столбца со средними оценками по еще трем предметам (subject_id=2, subject_id=3, subject_id=4)

Заранее благодарен.
4 дек 10, 20:47    [9887338]     Ответить | Цитировать Сообщить модератору
 Re: вложенный запрос... или не вложенный  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
select first_letter,
       round("1", 2) "1",
       round("2", 2) "2",
       round("3", 2) "3",
       round("4", 2) "4",
       round("5", 2) "5"
from
(
  select substr(upper(s.lastname),1,1) first_letter,
         subject_id,
         examrating       
  from k_student s
  left join k_ege e on e.user_id = s.id 
   and e.subject_id in (1,2,3,4,5) 
   and e.examrating > 0
) x
pivot (avg(examrating) for subject_id in (1,2,3,4,5))
order by 1;
4 дек 10, 21:22    [9887449]     Ответить | Цитировать Сообщить модератору
 Re: вложенный запрос... или не вложенный  [new]
franck_f
Member

Откуда: Санкт-Петербург
Сообщений: 257
_Nikotin,

спасибо за отклик.

ваш запрос выдает ошибку "неверное завершение SQL предложения" и подчеркивает букву "p" в слове pivot...
4 дек 10, 22:00    [9887559]     Ответить | Цитировать Сообщить модератору
 Re: вложенный запрос... или не вложенный  [new]
franck_f
Member

Откуда: Санкт-Петербург
Сообщений: 257
_Nikotin,

забыл уточнить - у меня 10g... а там по-моему с pivot сложности... =(
4 дек 10, 22:25    [9887637]     Ответить | Цитировать Сообщить модератору
 Re: вложенный запрос... или не вложенный  [new]
zhal
Member

Откуда: Киев-Харьков
Сообщений: 647
franck_f,

Под рукой нету оракла, чтобы проверить, но имхо так
select substr(upper(t.lastname),1,1) as "1я буква",
       round(avg(decode(e.subject_id,1,e.examrating,NULL)), 2) as "subject_id=1",       
       round(avg(decode(e.subject_id,2,e.examrating,NULL)), 2) as "subject_id=2",
       round(avg(decode(e.subject_id,3,e.examrating,NULL)), 2) as "subject_id=3",
       round(avg(decode(e.subject_id,4,e.examrating,NULL)), 2) as "subject_id=4"
  from bgi804.k_student t,
       bgi804.k_ege e
 where t.id = e.user_id
       and e.examrating > 0
       and e.subject_id IN (1,2,3,4)
 group by substr(upper(t.lastname),1,1)
 order by substr(upper(t.lastname),1,1)
4 дек 10, 22:33    [9887661]     Ответить | Цитировать Сообщить модератору
 Re: вложенный запрос... или не вложенный  [new]
franck_f
Member

Откуда: Санкт-Петербург
Сообщений: 257
zhal,

Это работает!
спасибо Вам огромное!
4 дек 10, 22:40    [9887687]     Ответить | Цитировать Сообщить модератору
 Re: вложенный запрос... или не вложенный  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
zhal
decode(e.subject_id,1,e.examrating,NULL)

это лишнее
4 дек 10, 23:59    [9887883]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить