반응형

Oracle/SQL Question 11

오라클 SQL 문제 (초급,중급)

실무에서 자주 접하는 Oracle SQL 문제를 WITH절을 활용하여 연습할 수 있도록 구성했습니다.테스트 데이터는 CTE(Common Table Expression)를 사용하여 실행이 가능하도록 설계하였고, 결과 예시는 표 를 참고하여 확인할 수 있습니다.SQL은 많은 문제를 접하고 작성해보면 마스터 테이블을 어떤걸로 설정하고 조인테이블은 어떤걸로 할지 감이 생기게 되고 집합적 사고방식으로 발전해나가다 보면 많이 응용력 또한 많이 향상됩니다.요즘은 ChatGPT 등 AI 도구를 이용해서도 SQL을 작성할 수 있어 완벽하진 않아도 참고하기에는 좋습니다.개인적으로는 IT쪽에서 관련된 업무를 하면서 SQL을 잘 배워두면 업무를 하기가 굉장히 수월해 집니다. 복잡한 요구사항을 글과 대화로 쭉 설명하여 이해를..

Oracle/SQL Question 2025.09.01

[퀴즈] 문자는 문자 그대로 숫자0은 0,소수는 첫째자리까지만 출력해보세요~

T 테이블에 A컬럼은 vchar2형식이고 문자와 숫자가 혼합되어 데이터가 들어있다. 문자는 그대로 출력을 하고 숫자인경우 0은 그대로 0으로 나타내고 소수인경우엔 소수 첫째자리까지만 나타내고자 한다. WITH T AS ( SELECT '0' A FROM DUAL UNION ALL SELECT '42.195' FROM DUAL UNION ALL SELECT 'ND' FROM DUAL UNION ALL SELECT 'BD' FROM DUAL ) ->정답 트리플 클릭 SELECT A , SUBSTR(A,1,INSTR(A||'.','.')+1) B FROM T

Oracle/SQL Question 2015.09.14

[퀴즈] Rollup을 이용한 소계의 정렬

다음 쿼리를 실행하면 사원의 급여와 부서별 소계 및 총계가 출력됩니다. 이 결과를 부서별 소계 순서대로 정렬하는 쿼리를 작성해 주세요. SELECT deptno, empno, SUM(sal) sum_sal FROM scott.emp GROUP BY ROLLUP(deptno, empno) ; 정렬전 결과 정렬후 결과 DEPTNO EMPNO SUM_SAL DEPTNO EMPNO SUM_SAL 10 7782 2450 20 7369 800 10 7839 5000 20 7566 2975 10 7934 1300 20 7788 3000 10 8750 20 7876 1100 20 7369 800 20 7902 3000 20 7566 2975 20 10875 20 7788 3000 30 7499 1600 20 7876 ..

Oracle/SQL Question 2015.09.14

[퀴즈] RANK()함수를 사용하지 않고 순위 구하기

WITH T AS( SELECT 1 MONEY, 1 NUM FROM DUAL UNION ALL SELECT 1 , 2 FROM DUAL UNION ALL SELECT 2 , 3 FROM DUAL UNION ALL SELECT 2 , 4 FROM DUAL UNION ALL SELECT 5 , 5 FROM DUAL ) MONEY가 같으면 같은 랭크에 속하고 그 뒤에 랭크는 그 수만큼 더한 랭크가 나와야 된다. 결과는 다음과 같다. 결과 NUM MONEY RNK ---------- ---------- ---------- 5 5 1 3 2 2 4 2 2 1 1 4 2 1 4 =>정답 트리플 클릭 SELECT A.NUM, A.MONEY, COUNT(B.MONEY)+1 RNK FROM T A, T B WHERE A..

Oracle/SQL Question 2015.09.14

[퀴즈] 행을 열로 변환 퀴즈

code value 1 aaa 1 bbb 2 ccc 3 ddd 3 eee => 위 data를 아래의 형식으로 code value1 value2 1 aaa bbb 2 ccc 3 ddd eee =>정답 트리플 클릭 WITH T AS ( SELECT '1' AS CODE, 'AAA' AS VAL FROM DUAL UNION ALL SELECT '1' AS CODE, 'BBB' AS VAL FROM DUAL UNION ALL SELECT '2' AS CODE, 'CCC' AS VAL FROM DUAL UNION ALL SELECT '3' AS CODE, 'DDD' AS VAL FROM DUAL UNION ALL SELECT '3' AS CODE, 'EEE' AS VAL FROM DUAL ) SELECT CODE..

Oracle/SQL Question 2015.09.14

[퀴즈] 조건부 누적쿼리 퀴즈

[퀴즈] 조건부 누적 쿼리 다음과 같은 seq, amt 자료가 있을때 result를 구하는 쿼리를 작성하세요. 순차적으로 amt값을 누적합산하되 그 값이 음수일경우엔 0이 되어야 합니다. WITH t AS ( SELECT 1 seq, -2000 amt FROM dual UNION ALL SELECT 2, 4000 FROM dual UNION ALL SELECT 3, -5000 FROM dual UNION ALL SELECT 4, -2000 FROM dual UNION ALL SELECT 5, 3000 FROM dual UNION ALL SELECT 6, 1500 FROM dual UNION ALL SELECT 7, -250 FROM dual UNION ALL SELECT 8, 320 FROM dual U..

Oracle/SQL Question 2015.09.14

[퀴즈] 사과 나눠주기 퀴즈

사과 나눠주기 퀴즈입니다. (사실 이미 알고 계신분이 있을 겁니다.) 아래와 같은 테이블 A가 주어집니다. with A as ( select 9 ID, 2 avail_qty from dual union all select 1, 3 from dual union all select 12, 4 from dual union all select 4, 5 from dual union all select 2, 8 from dual union all select 3, 13 from dual union all select 8, 7 from dual) A테이블은 ID(특정사람의 식별자), avail_qty(해당 ID가 최대한 먹을 수 있는 사과의 양) 컬럼으로 구성되어 있습니다. 위의 테이블과 나누어 주는 사과의 갯수(변..

Oracle/SQL Question 2015.09.14

[퀴즈] LEAD,LAG 함수 응용 퀴즈

출처 : PRODBA 카페 다음과 테이블(변경전 테이블)이 있다고 가정했을때 해당 테이블에 ERR_TYPE(오류유형)이라는 컬럼을 추가하고 싶은데요 오류유형 컬럼은 같은 컬럼영문명(COL_ENG_NM)을 대상으로 컬럼한글명, 데이터 타입, 길이를 비교하여 다른것에 대한 오류 유형을 나타나려고 하는데요. 예를 들어 컬럼영문명이 같은데 데이터 타입이 다르면 '데이터 타입 불일치' 컬럼영문명이 같은데 컬럼한글명이 다르면 '컬럼한글명 불일치' 컬럼영문명이 같은데 컬럼길이가 다르면 '데이터 길이 불일치' 이런식으로 '변경후 테이블' 처럼 나타나고 싶습니다. ■ 변경전 테이블 COL_ENG_NM COL_HAN_NM DATA_TYPE LEN A 에이 CHAR 14 A 에이 VARCHAR2 14 B 비 NUMBER 7..

Oracle/SQL Question 2015.09.14

[퀴즈] 집약함수

문제> 다음과 같이 데이터 가 있다고 가정하자. with tour_group as ( select '111' tour_key, '중국관광단' tour_title, '중국' tour_position, '2011.01.03' start_day, '2011.01.13' end_day from dual union all select '222', '일본광광단', '일본', '2011.01.05', '2011.01.11' from dual ), tour_person as ( select '111' tour_key, 1 tour_seq, '백두산' tour_person_name from dual union all select '111', 2, '한라산' from dual union all select '111', 3..

Oracle/SQL Question 2015.09.14

[퀴즈] 구분자로 데이터 나누기

문제> 아래와 같이 "|" 표시가 들어간 데이터가 있다. 이 데이터를 "|" 를 기준으로 행으로 데이터를 나타내고자 한다. with tmp as ( select 'aa|bbb|cccc' str from dual union all select 'dddd|eeeee|ff|ggg' from dual ) select * from tmp; 결과는 아래와 같다. 아래와 같이 결과가 나오도록 해보자. 정답 트리플클릭 > SELECT REGEXP_SUBSTR(str,'[^|]+',1,LEVEL) str FROM (select rownum SEQ, str from tmp) CONNECT BY CONNECT_BY_ROOT SEQ = SEQ and LEVEL

Oracle/SQL Question 2015.09.14
반응형