Я не знаю, какие аналитические функции поддерживает SQL Server (который, я полагаю, вы используете);для Oracle вы можете использовать что-то вроде:
select v.*,
cumulative/overall percent_current,
previous_cumulative/overall percent_previous from (
select
id,
name,
value,
cumulative,
lag(cumulative) over (order by id) as previous_cumulative,
overall
from (
select
id,
name,
value,
sum(value) over (order by id) as cumulative,
(select sum(value) from mytab) overall
from mytab
order by id)
) v
Объяснение:
- сумма (значение) за ... вычисляет промежуточную сумму для суммы
- lag () дает вам значениедля предыдущей строки
- затем вы можете объединить их, чтобы найти первую строку, где процент_куррент> 0,6 и процент_предыдущее <0,6 </p>