Cardemy Card emy ← 탐색으로 돌아가기
[

[SQLD합격] 고급 SQL과 함수 문제 대응력 만들기

시험 후반부에서 자주 등장하는 윈도우 함수, 순위 함수, CASE 문, DECODE, NVL 같은 함수들을 집중 학습한다. 특히 RANK, DENSE_RANK, ROW_NUMBER 차이처럼 헷갈리는 포인트를 반복적으로 익히고, GROUPING SETS, ROLLUP, CUBE 같은 고난도 영역도 실전 문제 중심으로 정리한다. 함수 문제를 빠르게 해석하는 능력을 만드는 단계다.

67 문항 0 복사 카데미 2026.05.15

수록 문항

총 67개

아래 문항들은 이 학습지에 수록된 카드입니다. 각 카드는 문제(Q)와 답(A)으로 구성되어 있으며, 일부 카드에는 추가 해설이 포함되어 있습니다. 로그인하면 이 학습지를 내 계정으로 복사해 카드를 한 장씩 넘기며 반복 학습할 수 있고, 숙달한 카드는 완료 표시하여 다음 세션에서 제외할 수 있습니다.

  1. #1
    Q.

    SELECT employee_id, salary, RANK() OVER(ORDER BY salary DESC) FROM employees

    A.

    급여가 높은 순서대로 동일 순위를 부여해서 조회한다

    RANK는 공동 순위 발생 시 다음 순위를 건너뛴다.
  2. #2
    Q.

    SELECT employee_id, salary, DENSE_RANK() OVER(ORDER BY salary DESC) FROM employees

    A.

    급여가 높은 순서대로 빈 순위 없이 순위를 조회한다

    DENSE_RANK는 공동 순위 다음 번호를 건너뛰지 않는다.
  3. #3
    Q.

    SELECT employee_id, salary, ROW_NUMBER() OVER(ORDER BY salary DESC) FROM employees

    A.

    급여가 높은 순서대로 고유 번호를 부여해서 조회한다

    ROW_NUMBER는 중복 없이 무조건 순차 번호를 부여한다.
  4. #4
    Q.

    SELECT employee_id, department_id, salary, RANK() OVER(PARTITION BY department_id ORDER BY salary DESC) FROM employees

    A.

    부서별로 급여 순위를 조회한다

    PARTITION BY는 그룹별로 윈도우 함수를 따로 계산한다.
  5. #5
    Q.

    SELECT employee_id, department_id, salary, ROW_NUMBER() OVER(PARTITION BY department_id ORDER BY salary DESC) FROM employees

    A.

    부서별 급여 순서에 따라 고유 번호를 조회한다

    부서마다 번호가 다시 1부터 시작된다.
  6. #6
    Q.

    SELECT employee_id, salary, SUM(salary) OVER() FROM employees

    답은 로그인 후 확인
  7. #7
    Q.

    SELECT employee_id, department_id, salary, SUM(salary) OVER(PARTITION BY department_id) FROM employees

    답은 로그인 후 확인
  8. #8
    Q.

    SELECT employee_id, salary, AVG(salary) OVER() FROM employees

    답은 로그인 후 확인
  9. #9
    Q.

    SELECT employee_id, salary, MAX(salary) OVER() FROM employees

    답은 로그인 후 확인
  10. #10
    Q.

    SELECT employee_id, salary, MIN(salary) OVER() FROM employees

    답은 로그인 후 확인
  11. #11
    Q.

    SELECT employee_id, hiredate, LAG(hiredate) OVER(ORDER BY hiredate) FROM employees

    답은 로그인 후 확인
  12. #12
    Q.

    SELECT employee_id, hiredate, LEAD(hiredate) OVER(ORDER BY hiredate) FROM employees

    답은 로그인 후 확인
  13. #13
    Q.

    SELECT employee_id, salary, FIRST_VALUE(salary) OVER(ORDER BY salary DESC) FROM employees

    답은 로그인 후 확인
  14. #14
    Q.

    SELECT employee_id, salary, LAST_VALUE(salary) OVER(ORDER BY salary DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM employees

    답은 로그인 후 확인
  15. #15
    Q.

    SELECT employee_id, salary, NTILE(4) OVER(ORDER BY salary DESC) FROM employees

    답은 로그인 후 확인
  16. #16
    Q.

    SELECT employee_id, salary, CUME_DIST() OVER(ORDER BY salary DESC) FROM employees

    답은 로그인 후 확인
  17. #17
    Q.

    SELECT employee_id, salary, PERCENT_RANK() OVER(ORDER BY salary DESC) FROM employees

    답은 로그인 후 확인
  18. #18
    Q.

    SELECT employee_id, salary, RATIO_TO_REPORT(salary) OVER() FROM employees

    답은 로그인 후 확인
  19. #19
    Q.

    SELECT employee_id, department_id, salary, SUM(salary) OVER(PARTITION BY department_id ORDER BY salary) FROM employees

    답은 로그인 후 확인
  20. #20
    Q.

    SELECT employee_id, salary, AVG(salary) OVER(ORDER BY hiredate ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) FROM employees

    답은 로그인 후 확인
  21. #21
    Q.

    SELECT employee_id, salary, COUNT(*) OVER() FROM employees

    답은 로그인 후 확인
  22. #22
    Q.

    SELECT employee_id, department_id, COUNT(*) OVER(PARTITION BY department_id) FROM employees

    답은 로그인 후 확인
  23. #23
    Q.

    SELECT department_id, SUM(salary) FROM employees GROUP BY ROLLUP(department_id)

    답은 로그인 후 확인
  24. #24
    Q.

    SELECT department_id, job_id, SUM(salary) FROM employees GROUP BY ROLLUP(department_id, job_id)

    답은 로그인 후 확인
  25. #25
    Q.

    SELECT department_id, SUM(salary) FROM employees GROUP BY CUBE(department_id)

    답은 로그인 후 확인
  26. #26
    Q.

    SELECT department_id, job_id, SUM(salary) FROM employees GROUP BY CUBE(department_id, job_id)

    답은 로그인 후 확인
  27. #27
    Q.

    SELECT department_id, job_id, SUM(salary) FROM employees GROUP BY GROUPING SETS(department_id, job_id)

    답은 로그인 후 확인
  28. #28
    Q.

    SELECT department_id, job_id, SUM(salary) FROM employees GROUP BY GROUPING SETS((department_id, job_id),(department_id),())

    답은 로그인 후 확인
  29. #29
    Q.

    SELECT department_id, GROUPING(department_id) FROM employees GROUP BY ROLLUP(department_id)

    답은 로그인 후 확인
  30. #30
    Q.

    SELECT employee_id, CASE WHEN salary >= 5000 THEN 'HIGH' ELSE 'LOW' END FROM employees

    답은 로그인 후 확인
  31. #31
    Q.

    SELECT employee_id, CASE department_id WHEN 10 THEN 'SALES' WHEN 20 THEN 'HR' ELSE 'ETC' END FROM employees

    답은 로그인 후 확인
  32. #32
    Q.

    SELECT employee_id, DECODE(department_id,10,'SALES',20,'HR','ETC') FROM employees

    답은 로그인 후 확인
  33. #33
    Q.

    SELECT employee_id, NVL(commission_pct,0) FROM employees

    답은 로그인 후 확인
  34. #34
    Q.

    SELECT employee_id, NVL2(commission_pct,'Y','N') FROM employees

    답은 로그인 후 확인
  35. #35
    Q.

    SELECT employee_id, NULLIF(salary,0) FROM employees

    답은 로그인 후 확인
  36. #36
    Q.

    SELECT employee_id, COALESCE(commission_pct,bonus_pct,0) FROM employees

    답은 로그인 후 확인
  37. #37
    Q.

    SELECT employee_id, ROUND(salary, -2) FROM employees

    답은 로그인 후 확인
  38. #38
    Q.

    SELECT employee_id, TRUNC(salary, -2) FROM employees

    답은 로그인 후 확인
  39. #39
    Q.

    SELECT employee_id, MOD(salary,1000) FROM employees

    답은 로그인 후 확인
  40. #40
    Q.

    SELECT employee_id, CEIL(salary/1000) FROM employees

    답은 로그인 후 확인
  41. #41
    Q.

    SELECT employee_id, FLOOR(salary/1000) FROM employees

    답은 로그인 후 확인
  42. #42
    Q.

    SELECT employee_id, POWER(salary,2) FROM employees

    답은 로그인 후 확인
  43. #43
    Q.

    SELECT employee_id, ABS(salary-5000) FROM employees

    답은 로그인 후 확인
  44. #44
    Q.

    SELECT employee_id, LENGTH(first_name) FROM employees

    답은 로그인 후 확인
  45. #45
    Q.

    SELECT employee_id, SUBSTR(first_name,1,3) FROM employees

    답은 로그인 후 확인
  46. #46
    Q.

    SELECT employee_id, INSTR(first_name,'A') FROM employees

    답은 로그인 후 확인
  47. #47
    Q.

    SELECT employee_id, LPAD(first_name,10,'*') FROM employees

    답은 로그인 후 확인
  48. #48
    Q.

    SELECT employee_id, RPAD(first_name,10,'*') FROM employees

    답은 로그인 후 확인
  49. #49
    Q.

    SELECT employee_id, REPLACE(first_name,'A','X') FROM employees

    답은 로그인 후 확인
  50. #50
    Q.

    SELECT employee_id, TRIM('A' FROM first_name) FROM employees

    답은 로그인 후 확인
  51. #51
    Q.

    SELECT employee_id, LOWER(first_name) FROM employees

    답은 로그인 후 확인
  52. #52
    Q.

    SELECT employee_id, UPPER(first_name) FROM employees

    답은 로그인 후 확인
  53. #53
    Q.

    SELECT employee_id, CONCAT(first_name,last_name) FROM employees

    답은 로그인 후 확인
  54. #54
    Q.

    SELECT employee_id, first_name || last_name FROM employees

    답은 로그인 후 확인
  55. #55
    Q.

    SELECT employee_id, TO_CHAR(hiredate,'YYYYMMDD') FROM employees

    답은 로그인 후 확인
  56. #56
    Q.

    SELECT employee_id, TO_CHAR(salary,'999,999') FROM employees

    답은 로그인 후 확인
  57. #57
    Q.

    SELECT employee_id, TO_DATE('20250515','YYYYMMDD') FROM employees

    답은 로그인 후 확인
  58. #58
    Q.

    SELECT employee_id, TO_NUMBER('1000') FROM employees

    답은 로그인 후 확인
  59. #59
    Q.

    SELECT employee_id, EXTRACT(YEAR FROM hiredate) FROM employees

    답은 로그인 후 확인
  60. #60
    Q.

    SELECT employee_id, MONTHS_BETWEEN(SYSDATE,hiredate) FROM employees

    답은 로그인 후 확인
  61. #61
    Q.

    SELECT employee_id, ADD_MONTHS(hiredate,6) FROM employees

    답은 로그인 후 확인
  62. #62
    Q.

    SELECT employee_id, NEXT_DAY(hiredate,'MONDAY') FROM employees

    답은 로그인 후 확인
  63. #63
    Q.

    SELECT employee_id, LAST_DAY(hiredate) FROM employees

    답은 로그인 후 확인
  64. #64
    Q.

    SELECT employee_id, salary, CASE WHEN salary >= 10000 THEN 'A' WHEN salary >= 5000 THEN 'B' ELSE 'C' END FROM employees

    답은 로그인 후 확인
  65. #65
    Q.

    SELECT department_id, SUM(salary) FROM employees GROUP BY department_id HAVING SUM(salary) > 50000

    답은 로그인 후 확인
  66. #66
    Q.

    SELECT employee_id, salary, SUM(salary) OVER(ORDER BY hiredate) FROM employees

    답은 로그인 후 확인
  67. #67
    Q.

    SELECT employee_id, department_id, AVG(salary) OVER(PARTITION BY department_id) FROM employees

    답은 로그인 후 확인

처음 5개의 답만 미리 보여드려요. 전체 67개 항목은 로그인 후 학습할 수 있습니다.

이 학습지를 효과적으로 활용하는 방법

  • ① 처음에는 전체 문항을 한 번씩 훑어보며 익숙한 항목과 낯선 항목을 분류하세요.
  • ② 학습 세션에서 "안 외운 문항만" 옵션으로 아직 숙달하지 못한 카드에 집중합니다.
  • ③ 랜덤 순서 학습을 활용해 카드 순서에 의존한 암기를 방지하세요.
  • ④ 키보드 단축키(1·2·A·D·Space)를 쓰면 한 손으로도 빠르게 복습할 수 있습니다.
  • ⑤ 복사(Fork)한 학습지에는 자유롭게 나만의 해설이나 예문을 덧붙여 내 스타일로 다듬어 보세요.

카데미에 로그인하면 이 학습지를
내 학습지로 복사하여 바로 학습할 수 있습니다.