3 개의 열 (항목, old_value, new_value)이있는 테이블 (STUFF)이 있습니다. 가치 변화율이 가장 높은 항목을 모두 검색하고 싶습니다. 다음 쿼리는 "여기서는 그룹 함수가 허용되지 않습니다"라는 오류를 생성합니다. 이 문제를 해결하려면 어떻게해야합니까? Oracle SQL : 파생 된 열에서 MAX 값을 선택하는 방법
SELECT item,
old_value,
new_value,
highest_percentage
FROM (SELECT item, old_value, new_value,
(new_value - old_value)/old_value * 100 AS highest_percentage
FROM STUFF)
WHERE highest_percentage = MAX(highest_percentage);
이
은 이상적으로는이 출력을해야 테이블CREATE TABLE STUFF
(item VARCHAR2(30) PRIMARY KEY,
old_value NUMBER(6, 2),
new_value NUMBER(6, 2));
INSERT INTO STUFF VALUES('E1', 0.62, 1.78);
INSERT INTO STUFF VALUES('B1', 0.80, 3.28);
INSERT INTO STUFF VALUES('B2', 2.72, 7.36);
INSERT INTO STUFF VALUES('M4', 2.70, 5.65);
INSERT INTO STUFF VALUES('T6', 5.70, 6.65);
INSERT INTO STUFF VALUES('R3', 4.00, 16.40);
INSERT INTO STUFF VALUES('G10', 8.00, 32.80);
입니다.
select * from
(select * from XXX order by YYY desc)
where rownum < N;
당신의 최신 업데이트에 따르면 - 스칼라 서브 쿼리는이 경우에 도움이 :
ITEM OLD_VALUE NEW_VALUE HIGHEST_PERCENTAGE
------------------- --------- --------- ------------------
B1 0.80 3.28 310
G10 8.00 32.80 310
R3 4.00 16.40 310
가장 높은 백분율과 같은 백분율을 가진 행 수를 알 수없는 경우 어떻게됩니까? –
그러나 항목 수 (N)를 미리 알지 못합니다. 이 경우에는 1 개의 최상위 항목 또는 3이있을 수 있습니다. – Anas
답변이 업데이트되었습니다. –