Здравствуйте, люди добрые ^^''
на защите курсовика задали вопрос - написать запрос. После некоторого.. м.. приведения задачи к человеческому виду получилось следующее:
Имеем таблицу, где ведётся учёт некоторого ресурса
Дата_прихода | Количество_приход | Дата_расхода | Количество_расход
требуется получить первую дату, когда расход превысил приход.
Суть в том, чтобы для каждой даты получить сумму по свойству "Количество.." всего, что было до этой даты. Даты прихода и расхода между собой никак не соотносятся, так что можно сказать, что это две таблицы..
В общем, буду благодарна за любые светлые мысли по этой теме, потому что нам о таких возможностях не читали, и.. вот.
Вариант на вскидку, не оптимальный.
1. Для начала надо привести к одной таблице.
Обратить внимание во второй выборке на знак "-"
select Дата_прихода, Количество_приход from table
union
select Дата_расхода, -Количество_расход from table
2. Выборка с нарастающим итогом (избыточна).
Под table_union подразумевается вышестоящий запрос.
select Date, count from table_union ta1
where 0>
(select sum(count)
from table_union ta2
where ta2.Date<=ta1.Date);
3. выбрать минимальную дату min()
select min(Date) from table_union ta1
where 0>
(select sum(count)
from table_union ta2
where ta2.Date<=ta1.Date);
........ Что-то типа такого...
Возможно через with это будет более понятно и читабельно.
хм, спасибо.. я сделала
хм, спасибо.. я сделала немного по-другому. если представить, что это всё же две табицы, то:
и дальше чисто технически выбрать первую дату, где приход меньше расхода.. криво, конечно, но работает вроде ^^'''''