Oracle SQL에서 결과를 한 행으로 제한하는 방법
성공적으로 실행되는 이 쿼리가 있습니다.
SELECT customerNumber
FROM ORDERS
GROUP BY customerNumber
ORDER BY count(orderNumber) DESC
그러나 반환되는 행 수를 1로 제한하려고 하면 다음 오류가 발생합니다.
ORA-00933: SQL command not properly ended
제가 시도한 것은 다음과 같습니다.
SELECT customerNumber
FROM ORDERS
GROUP BY customerNumber
ORDER BY count(orderNumber) DESC
fetch first 1 row only;
그리고.
SELECT customerNumber
FROM ORDERS
GROUP BY customerNumber
ORDER BY count(orderNumber) DESC
WHERE ROWNUM=1;
Oracle에서는 먼저 주문을 수행한 후 다음을 선택해야 합니다.rownum
따라서 정렬된 데이터를 반환하는 쿼리를 중첩하고 필터링을 수행해야 합니다.WHERE
외부 조항
SELECT * FROM
(
SELECT customerNumber
FROM ORDERS
GROUP BY customerNumber
ORDER BY count(orderNumber) DESC
) resultSet
WHERE ROWNUM=1;
그룹화 기능과 창 기능을 결합하여 이를 수행할 수 있습니다.
select customernumber, num_orders
from (
SELECT customerNumber,
count(*) as num_orders,
dense_rank() over (order by count(*) desc) as rnk
from orders
group by customerNumber
) t
where rnk = 1;
단순한 "한 행만 가져오기"와 다른 점은 주문 수가 동일한 여러 고객도 반환한다는 것입니다.원하지 않는 경우 대체dense_rank()
와 함께row_number()
다음 순서 앞에 조건을 배치해야 합니다(그러나 정렬이 완료된 후 첫 번째 행이 필요한 것 같습니다).
그래서 당신은 선택을 사용해야 합니다.
select * from (
SELECT customerNumber
FROM ORDERS
GROUP BY customerNumber
ORDER BY count(orderNumber) DESC
) t
WHERE ROWNUM=1;
언급URL : https://stackoverflow.com/questions/41220882/how-to-limit-the-results-to-1-row-in-oracle-sql
'programing' 카테고리의 다른 글
CSS를 사용하여 오른쪽에서 배경 이미지 오프셋 (0) | 2023.08.23 |
---|---|
git 원격 태그와 이름이 같은 로컬 분기 푸시 (0) | 2023.08.23 |
TSQL을 사용하여 테이블의 기본 키 결정 (0) | 2023.08.23 |
Excel 매크로 - 줄 연속선이 너무 많음 (0) | 2023.08.23 |
쉼표로 구분된 값으로 두 테이블 결합 (0) | 2023.08.23 |