Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2
  • 3
  • 4

ТЕМА:

Re: Oracle: Эффективен ли запрос если в условии джойна есть >=? 12 года 6 мес. назад #3360

Добрый день!
Операция >= как правило приводит к индексному скану (если столбец индексирован).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Эффективен ли запрос если в условии джойна есть >=? 12 года 6 мес. назад #3361

phoebe A если несколько джойнов то AND использовать?

SELECT * FROM tab,tab2,tab3 WHERE col1=col2 and col3=col4

Выглядит несколько необычно. И что, действительно более удобочитаемо?

Meverik Насчет двойного использования ты был прав, надо еще добавить

AND HOUR_RATE.CHANGE_DATE = (SELECT MAX(CHANGE_DATE) FROM HOUR_RATE WHERE CHANGE_DATE <= WORK.WORK_DATE)

вот конечный запрос
SELECT 

WORK.EMPLOYEE_ID, 

SUM(WORK.WORK_DURATION * HOUR_RATE.RATE_VALUE) AS COSTS

 

FROM WORK, HOUR_RATE 



WHERE 

WORK.EMPLOYEE_ID = HOUR_RATE.EMPLOYEE_ID AND

WORK.WORK_DATE >= HOUR_RATE.CHANGE_DATE AND



HOUR_RATE.CHANGE_DATE = (SELECT MAX(CHANGE_DATE) FROM HOUR_RATE WHERE CHANGE_DATE <= WORK.WORK_DATE)



GROUP BY WORK.EMPLOYEE_ID

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Daymon.

Re: Oracle: Эффективен ли запрос если в условии джойна есть >=? 12 года 6 мес. назад #3362

Теперь получается, что для каждой даты из табл. WORK ставится в соответствие одна запись из таблицы RATE (с макимальной датой, не превышающей дату в WORK) - это разве верно?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Эффективен ли запрос если в условии джойна есть >=? 12 года 6 мес. назад #3363

Да как раз, то что нужно. HOUR_RATE это история изменений ЗП.

Например

01.04.2003 40$
01.06.2003 50$
01.09.2003 55$

Соответсвенно на все даты периода

01.04.2003 - 31.05.2003 действует ставка 40$
01.06.2003 - 31.08.2003 - 50$
01.09.2003 - 55$

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Эффективен ли запрос если в условии джойна есть >=? 12 года 6 мес. назад #3364

А что такое duration? Пересекать границы изменения ставки может?
если можно, с этого момента поподробнее))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: Эффективен ли запрос если в условии джойна есть >=? 12 года 6 мес. назад #3365

WORK_DURATION количество отработанного времени в часах на дату WORK_DATE.
Тут по моему понятно..

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
  • 4
Время создания страницы: 0.200 секунд