2016-09-24 2 views
-1

2 개의 열이 있습니다. CustNo 및 CustBalmax를 사용하지 않고 최고 값 선택?

최고 잔액이있는 CustNo를 선택하는 스크립트를 작성하려고합니다. 나는 맥스를 사용해 보았는데, 나는 CustBal 칼럼 만 사용하고이 경우에는 사용하지 않아도된다. 나는 CUSTBAL 이후에 뭔가있는 아이템이 될 수 있다고 생각하니?

SELECT CUSTNO, CUSTBAL 
FROM CUSTOMER 
WHERE CUSTBAL 
+0

점점 가까워지고 있습니다. 지금 나는 가장 높은 균형을 가지고 있지만 CustNo를 포함하지 않습니다. CUSTOMO, CUSTBAL FROM CUSTOMER; SELECT MAX (CustBal) FROM CUSTOMER –

+0

예제 데이터 및 예상 결과를 추가하십시오. –

+0

용어 : 쿼리를 작성하려고합니다. 당신이 쓰는 모든 것이 "스크립트"는 아닙니다. – mathguy

답변

1

MAX를 사용하지 않는 이유는 무엇입니까?

MAX는 SELECT 절에서 집계 함수 MAX를 사용하여 쿼리 끝에 만 수행 할 수 있기 때문에 MAX를 개별적으로 계산해야하며 하나의 쿼리에 개별 행과 집계를 혼합 할 수 없습니다. 따라서 하위 쿼리에서 MAX를 계산해야합니다. 다른 방법

select custno, custbal 
from customer 
where custbal = (select max(custbal) from customer) 
; 
+0

고마워요! 그랬어! 나는 처음부터 최대를 오용하고 있었다. –

+0

진실을 말하자면 동일한 쿼리에서 개별 행과 ANALYTIC 함수를 혼합 할 수 있지만이 경우에는 필요한 행만 선택하기 위해 "외부"쿼리가 필요합니다. 그리고 연구 할 시점에 분석 기능이 아직 몇 개월 남았을 것입니다 (아마도). 나중에 참조 할 수 있도록 파일을 저장하십시오! – mathguy

3

:

select * from 
(select custno, custbal from customer order by custbal desc) 
where rownum = 1 

는 12C가 ..if :

select custno, custbal from customer 
order by custbal desc 
fetch next 1 rows only 

그러나이 단지 같은 가장 높은 균형을 여러 고객이있는 경우에도 단일 행을 반환됩니다. 그런 다음 가장 높은 custbal, 모든 기록을 원하는 경우 : - 당신에게 CUSTBAL의 최대를 제공

select custno, custbal from 
(select *, dense_rank() over (order by custbal desc) as rank from customer) 
where rank = 1 
0


안녕하세요 니키,
을 또한

SELECT CUSTNO, MAX(CUSTBAL) 
    FROM CUSTOMER 
     GROUP BY CUSTNO 
     ORDER BY CUSTNO 

GROUP BY는 기능에 의해 간단하게 그룹을 사용할 수 있습니다 CUSTNO와 관련하여
ORDER BY - CUSTNO 열의 오름차순으로 결과를 표시합니다.

관련 문제