우선 순위에 따라 다른 행에 값을 분산하거나 값을 추가하는 SQL 쿼리를 작성하려고합니다.우선 순위에 따라 다른 행에 값을 배분하는 Oracle SQL 쿼리
내 시나리오입니다.
아래 데이터가있는 M_FLIGHT
이라는 테이블이 있습니다.
DEPARTURE_DATE FLIGHT_NO FAIR_TYPE PRIORITY AVAILABLE_SEATS MAX_CAPACITY RETURN_SEAT
============== ========= ================= ======== =============== ============ ===========
05-DEC-14 SC-917 Normal Fair 1 7 10 4
05-DEC-14 SC-917 Maharaja Standard 2 8 10 0
05-DEC-14 SC-917 Maharaja Special 3 9 10 0
비행은 각각 우선 순위 1, 2, 3과 다른 공정 유형 (즉 일반 공정, 대왕 표준, 등등 대왕 델리 특별)을 가질 수있다.
사용자가 예약 한 좌석을 취소/반환하는 경우 RETURN_SEAT
값을 AVAILABLE_SEATS
값에 추가해야 해당 공정 유형에 대해 MAX_CAPACITY
값을 초과하지 않아야합니다.
초과하면 다음 우선 순위 (즉, 다음 공정 유형)에 나머지 값을 추가하십시오. 이 정보를
select f.*, sum(max_capacity-available_seats) as occupied,
sum(max_capacity-available_seats) over (order by priority) as cumeocc
from m_flight f;
당신이 v_Num
새로운 좌석을 할당 할 수 있습니다 : : 당신은 누적 합계를 사용하여 점유 공간을 계산할 수 있습니다
DEPARTURE_DATE FLIGHT_NO FAIR_TYPE PRIORITY AVAILABLE_SEATS MAX_CAPACITY RETURN_SEAT
============== ========= ================= ======== =============== ============ ===========
05-DEC-14 SC-917 Normal Fair 1 10 10 4
05-DEC-14 SC-917 Maharaja Standard 2 9 10 0
05-DEC-14 SC-917 Maharaja Special 3 9 10 0
교육용입니까 제작 용입니까? 위의 최종 결과는 4 개의 우선 순위 1 석을 반환하는 것입니다. 그렇지 않습니까? – Abecee
이것은 생산 용입니다. –
답장을 보내 주셔서 감사합니다. RETURN_SEAT 열 값은 변경되지 않으며 AVAILABLE_SEATS 열 값만 변경해야합니다. 우선 순위 = 1 인 경우 RETURN_SEAT 값은 4입니다. 따라서이 값 (4)을 PRIORITY 1의 AVAILABLE_SEATS 값 (7)에 추가해야하지만 MAX_CAPACITY 값 (예 : 10)을 초과하면 안됩니다. 초과하면 나머지 값을 다음 PRIORITY (즉, 2)에 더하십시오. –