이 질문은 아래에 주어진 이전 질문을 기반으로합니다. 이전 행의 값을 기준으로 백분율 가져 오기
select 문을 얻는 대신 업데이트 쿼리를 사용하여 럼 열을 채우는 업데이트 문을 원합니다 .
입력:
+---+--------+------+
|CID| number | rum |
+---+--------+------+
| 1 | 1.0000 | NULL |
| 3 | 2.0000 | NULL |
| 5 | 2.0000 | NULL |
| 6 | 4.0000 | NULL |
+---+--------+------+
산출:
+---+--------+------+
|CID| number | rum |
+---+--------+------+
| 1 | 1.0000 | NULL |
| 3 | 2.0000 |100.0 |
| 5 | 2.0000 | 0.0 |
| 6 | 4.0000 |100.0 |
+---+--------+------+
공식:
rum = (currNumber - prevNumber) / prevNumber * 100
에서 JOIN
및 창 함수를 사용할 수 있습니다 UPDATE
. 한 가지 방법은 다음과 같습니다.
update t join
(select t.*, lag(number) over (order by cid) as prev_number
from t
) tt
on tt.cid = t.cid
set rum = (number - prev_number) * 100 / prev_number;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다