LabHub

SQL 실전 · 집계와 윈도우 함수 · 퀴즈

퀴즈: 집계와 윈도우 함수

LabHub 에서 이어서 보기

문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. WHERE count(*) > 5 라고 쓰면 오류가 나는 이유는?

    1. count 는 WHERE 에서 지원되지 않는 함수라서
    2. WHERE 는 그룹으로 접기 전에 평가되므로 그 시점에는 셀 대상이 없어서
    3. 괄호 안이 비어 있어서
    4. 정수 비교가 아니라서
  2. avg(price) 결과가 예상보다 높게 나왔다. 데이터에 price 가 NULL 인 행이 있다면 그 이유는?

    1. NULL 이 0 으로 취급되어 평균이 낮아졌을 것이다
    2. NULL 이 최댓값으로 취급되기 때문
    3. NULL 행은 자동으로 평균값으로 채워지기 때문
    4. 집계 함수가 NULL 을 무시해 그 행이 분모에서도 빠졌기 때문
  3. 같은 그룹에서 조건별로 다른 집계를 한 번의 스캔으로 하려면?

    1. 쿼리를 두 번 돌려 조인한다
    2. WHERE 절에 OR 로 나열한다
    3. GROUP BY 를 두 번 쓴다
    4. 집계 함수에 FILTER (WHERE 조건) 을 붙인다
  4. rank() 와 dense_rank() 의 차이는?

    1. 동점이 있을 때 rank 는 다음 순위를 건너뛰고(1,1,3) dense_rank 는 건너뛰지 않는다(1,1,2)
    2. rank 는 동점을 다르게, dense_rank 는 같게 매긴다
    3. dense_rank 는 파티션을 지원하지 않는다
    4. rank 는 정렬이 필요 없다
  5. 카테고리별 상위 3개를 구하려고 SELECT 에 row_number 를 쓰고 같은 쿼리의 WHERE 에서 rn <= 3 으로 걸렀더니 오류가 났다. 올바른 방법은?

    1. HAVING 으로 옮긴다
    2. ORDER BY 에 조건을 넣는다
    3. LIMIT 3 을 붙인다
    4. 서브쿼리나 CTE 로 한 겹 감싸고 바깥에서 거른다
  6. sum(revenue) OVER () 처럼 OVER 괄호를 비우면?

    1. 괄호가 비어 있어 오류가 난다
    2. 결과 전체가 하나의 창이 되어 전체 합계를 각 행에 붙여 준다
    3. 첫 행부터 직전 행까지의 누적합이 된다
    4. 행마다 자기 revenue 값만 그대로 반환한다
  7. lag() 로 전월 대비를 구할 때 주의할 점은?

    1. 매출이 없는 달이 행 자체로 존재하지 않으면 그 달을 건너뛴 값과 비교하게 된다
    2. 비교할 이전 행이 없는 첫 행에서 오류가 난다
    3. lag 는 ORDER BY 정렬을 지원하지 않는다
    4. lag 는 숫자 타입 컬럼에만 쓸 수 있다