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

Откуда:
Сообщений: 20
Есть запрос, определяющий самый популярный фильм месяца.
Код запроса:
select distinct RESULT
from (select count(*)
over (partition by d.filmid),
upper (f.namef) as RESULT
from film f,
dogovor d
where f.filmid = d.filmid
and to_char (d.vidacha,'MM') = '01'
order by count(*)
over (partition by d.filmid) desc)
where rownum < 2;


Задача:
Изменить запрос так, чтобы вместе с популярным фильмом показывался доход (т.е. суммируем все ((d.vozvat-d.vidacha)*f.stoimost_prok) с тех же строк, по которым считался count).
Добавить ввод месяца (через амперсанд &).

К сообщению приложен файл. Размер - 67Kb
23 апр 18, 21:55    [21362604]     Ответить | Цитировать Сообщить модератору
 Re: Дополнить запрос (изменить).  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2758
Kira Mitt,
21342880

.....
stax
24 апр 18, 08:25    [21363042]     Ответить | Цитировать Сообщить модератору
 Re: Дополнить запрос (изменить).  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2758
Kira Mitt,

SQL> ed
Wrote file afiedt.buf

  1  with dogovor(filmid,client_id,vidacha,vozvrat) as (
  2    select 1,1,date '2017-01-30',date '2017-02-22' from dual union all
  3    select 1,2,date '2017-01-20',date '2017-01-20' from dual union all
  4    select 1,3,date '2018-01-15',date '2018-03-16' from dual union all
  5    select 1,4,date '2017-02-20',date '2018-02-02' from dual union all
  6    select 2,1,date '2010-01-20',date '2018-04-01' from dual
  7  )
  8  ,film (filmid,namef,stoimost_prok) as (
  9    select 1,'Операция Ы',10 from dual union all
 10    select 2,'Avatar',15 from dual )
 11  --
 12  select
 13    RESULT,"доход"
 14  from (
 15    select
 16        upper (f.namef) as RESULT
 17       ,(sum(least(last_day(vidacha),vozvrat)-vidacha+1) over (partition by d.filmid))*stoimost_prok  "доход"
 18    from film f,dogovor d
 19    where f.filmid = d.filmid and to_char (d.vidacha,'MM') = '01'
 20    order by count(*) over (partition by d.filmid) desc)
 21* where rownum < 2
SQL> /

RESULT          доход
---------- ----------
ОПЕРАЦИЯ Ы        200

SQL>



зи
идея 123йй
.....
stax
24 апр 18, 08:45    [21363083]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить