데이터베이스 기초

매출 표(매장, 금액)에 (A, 500), (A, 700), (B, 300), (B, 400), (C, 1200), (D, 200), (D, 900)의 7개 행이 있다. SELECT 매장, SUM(금액) FROM 매출 GROUP BY 매장 HAVING SUM(금액) >= 1000의 결과는 몇 행이 되는가?

  1. A1행
  2. B3행
  3. C4행
정답과 해설 보기

정답: B. 3행

GROUP BY 매장으로 매장별로 묶으면 합계는 A가 500 + 700 = 1200, B가 300 + 400 = 700, C가 1200, D가 200 + 900 = 1100인 4개 그룹이 됩니다. HAVING SUM(금액) >= 1000으로 합계가 1000 이상인 그룹만 남기므로 A, C, D의 3행이 결과가 됩니다. 1행은 WHERE 금액 >= 1000처럼 그룹으로 묶기 전의 한 행씩의 금액으로 고른 경우의 결과(C만)입니다. 4행은 HAVING을 붙이지 않았을 때의 그룹 수입니다.

이 분야 연습하기 분야로 돌아가기

데이터베이스 기초의 다른 문제

  1. 사원 표(이름, 부서, 급여)에 8개 행이 있고, 부서별 급여는 영업이 320, 280, 350, 개발이 400, 310, 총무가 260, 300, 기획이 330이다. SELECT 부서, COUNT(*) FROM 사원 WHERE 급여 >= 300 GROUP BY 부서 HAVING COUNT(*) >= 2의 결과는 몇 행이 되는가?
  2. 사원 표(사원번호, 이름, 부서ID)에 4개 행이 있고, 부서ID는 차례로 10, 20, 10, NULL이다. 부서 표(부서ID, 부서명)에는 부서ID가 10, 20, 30인 3개 행이 있다. SELECT 사원.이름, 부서.부서명 FROM 사원 INNER JOIN 부서 ON 사원.부서ID = 부서.부서ID의 결과는 몇 행이 되는가?
  3. 사원 표(사원번호, 이름, 부서ID)에 5개 행이 있고, 부서ID는 차례로 10, 20, 10, NULL, NULL이다. 부서 표(부서ID, 부서명)에는 부서ID가 10, 20, 30인 3개 행이 있다. SELECT 부서.부서명, 사원.이름 FROM 부서 LEFT OUTER JOIN 사원 ON 부서.부서ID = 사원.부서ID의 결과는 몇 행이 되는가?
  4. 표 R의 열 x의 값은 1, 1, 2, 3의 4개 행, 표 S의 열 x의 값은 1, 1, 2, 4의 4개 행이다. SELECT * FROM R INNER JOIN S ON R.x = S.x의 결과는 몇 행이 되는가?
  5. 고객 표(고객ID, 이름)에는 (C1, 아오키), (C2, 이노우에), (C3, 우에다), (C4, 에토)의 4개 행이 있다. 주문 표(주문ID, 고객ID, 금액)에는 (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000)의 5개 행이 있다. SELECT 이름 FROM 고객 WHERE 고객ID IN (SELECT 고객ID FROM 주문 WHERE 금액 > 5000)의 결과는 몇 행이 되는가?