본문 바로가기

쿼리4

Oracle 데이터 중복값 쿼리로 확인하기 테이블 내에서 중복값을 확인해야 할 일이 있어서 아래글을 참고하여 확인 후에, 제가 한번 더 테스트하여 정리하고자 글을 올립니다. 출처 : https://gent.tistory.com/485 [Oracle] 오라클 중복 데이터를 찾는 2가지 방법 오라클에서 중복 데이터를 추출하거나 찾기 위해서는 GROUP BY 절과 집계 함수를 사용하거나, OVER 절과 분석함수를 사용하는 방법이 있다. GROUP BY 절을 사용할 경우 중복 칼럼에 대한 건수만 조회 gent.tistory.com 제가 겪었던 상황은 특정 파티션테이블의 인덱스가 UNUSABLE상태로 빠져있어서 rebuild를 시도했는데, 중복값이 있어서 rebuild가 안되는 상황이었습니다. 그래서 실제로 데이터가 중복값이 있는지 확인해보았습니다. 저는.. 2022. 12. 8.
컬럼 중 NULL이 포함되어 있을 때 SUM의 결과값은? 컬럼내 , 컬럼 간 SUM 수행 시 NULL이 포함되어 있을 때 어떻게 결과값이 나오는지 정리해보겠습니다. 테스트 테이블은 아래와 같습니다. 테이블 A C1 C2 C3 10 20 NULL 15 NULL NULL 50 70 20 간단히 위의 테이블을 만드는 쿼리입니다. with A as ( select 10 as c1,20 as c2,null as c3 from dual union all select 15,null,null from dual union all select 50,70,20 from dual ) [이 부분에 쿼리 작성] 그럼 제가 테스트해본 쿼리를 아래에 적어 놓겠습니다. 해당 쿼리의 값들은 각각 결과값이 어떻게 될까요? 1번 select sum(c2) from A 2번 select sum(c.. 2022. 3. 10.
ROLLUP을 대신하는 방법 소계를 구하는 ROLLUP을 사용하지 않고도 소계를 구할 수 있는 방법이 있습니다. ROLLUP 쿼리 select to_char(t1.ord_dt,'YYYYMM') ord_ym,t1.cus_id,sum(t1.ord_amt) ord_amt from t_ord t1 where t1.cus_id in ('CUS_0001','CUS_0002') and t1.ord_dt >= to_date ('20170301','YYYYMMDD') and t1.ord_Dt < to_date('20170501','YYYYMMDD') group by rollup (to_char(t1.ord_dt,'YYYYMM'),t1.cus_id); ORD_YM CUS_ID ORD_AMT ------ --------------------------.. 2020. 11. 24.
GROUP BY 컬럼의 변형 GROUP BY에 컬럼을 정의할 때 컬럼을 변형할 수 있습니다. TO_CHAR,TO_DATE와 같은 오라클 기본함수 뿐만 아니라, CASE(또는 DECODE)와 같은 치환 문법도 사용할 수 있습니다. 문자와 문자를 결합하거나 산술연산도 할 수 있습니다. --GROUP BY에 CASE를 사용한 예 select 지불방법 ,case when 지불금액 >= 5000 then 'High' when 지불금액 >= 3000 then 'Middle' else 'Low' end 지불금액_TEMP ,count(*) 주문수 from 주문테이블 group by 지불방법, ,case when 지불금액 >= 5000 then 'High' when 지불금액 >= 3000 then 'Middle' else 'Low' end orde.. 2020. 11. 9.