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

ТЕМА:

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

Так пересекать границу изменения ставки может?
Вы считаете по последней ставке, но по полной длительности. Если длительность больше последнего диапазона изменения ставки (то есть надо считать по нескольким ставкам), то вы считаете неверно имхо. Если же нужно считать по последней ставке, то запрос можно написать проще - взять последнюю ставку и умножить на длительность и суммировать нечего. Зачем тогда sum в селекте, если нужна только одна строка?

Лучше б сначала на бумаге решение написать...

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

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

Рекомендую всегда для таких таблиц заводить не поле ДАТА (кстати, не понимаю, неужели именовать объекты и атрибуты по-русски менее удобно, чем по ... не знаю даже по-какому :-)), а поля ДАТА_КОН и ДАТА_НАЧ. ДАТА_КОН помещать в первичный ключ и поддерживать ёлку:
например,
НОМЕР | ДАТА_КОН | ДАТА_НАЧ | ЗНАЧЕНИЕ ...

1 05.01.2003 01.01.1980 100 ...
1 10.02.2003 05.01.2003 200 ...
1 01.01.3000 10.02.2003 500 ...
...

В ключе НОМЕР И ДАТА_КОН. Плюс индекс на НОМЕР, ДАТА_КОН, ДАТА_НАЧ.
В запросе использовать: :дНашаДата BETWEEN ДАТА_НАЧ AND ДАТА_КОН - 1 (либо BETWEEN ДАТА_НАЧ + 1 AND ДАТА_КОН, это уж как удобнее).

Значительно жизнь упрощает. Никаких <= не надо.

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

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

для программера твой вариант конечно более удобен, а юзер просто хочет вводить дату начала действия новой ставки и ее значение. Конечно можно такой юзерский интерфейс поддерживать и с наличием ДАТА_НАЧ AND
ДАТА_КОН, при добавлении новой ставки вычисляя ДАТА_КОН = [ДАТА_НАЧ новой ставки] - 1 день.

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

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

Именно так и надо. Не надо путать данные и их представление. Если пользователь хочет это видеть, не значит вовсе что так лучше и хранить.

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

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

для программера твой вариант конечно более удобен, а юзер просто хочет вводить дату начала действия новой ставки и ее значение


:-)Наверное, все же наоборот. Время отклика уменьшится. А как вводил он дату, так и будет вводить. Дело программиста, как ты и говоришь, строить елку (собственно триггер повесить и все).

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

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

А почему "елка"? В смысле откуда такое название?

Daymon, вы уверены в правильности расчета? Так как ставки у вас растут - в случае неверного расчета, по вашей вине будет перерасход - это значит "без премии" :)

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

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