메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
67번째 줄: 67번째 줄:
# 학과 평균이 85점 이상인 그룹만 선택
# 학과 평균이 85점 이상인 그룹만 선택
# 평균 점수 순으로 정렬
# 평균 점수 순으로 정렬
<source lang=sql>
:<source lang=sql>
SELECT department AS 학과
SELECT department AS 학과
     , COUNT(*) AS 학생수
     , COUNT(*) AS 학생수

2025년 6월 6일 (금) 14:33 판

SELECT 기본 구문

명령어 설명
SELECT 테이블에 있는 속성을 지정하여 데이터를 조회하는 명령어 (주로 속성(컬럼)을 기술)
FROM 데이터가 있는 테이블이나 뷰를 지정하는 명령어 (주로 테이블, 뷰, 인라인뷰 등을 기술)
WHERE 데이터를 조회하는 조건을 지정하는 명령어 (주로 조건을 기술)
GROUP BY 특정 속성을 기준으로 그룹화하여 검색할 때 사용하는 명령어 (주로 SELECT 절에 사용된 속성을 그룹핑할 때 기술)
HAVING 그룹화된 속성에 조건을 지정하는 명령어 (주로 ~보다 크거나 작은 경우, 같은 경우를 지정)
ORDER BY 정렬 명령어 (주로 속성값에 오름차순, 내림차순 속성을 지정)

SELECT 기본 예제

예제 1. 부서/사원 조회

  1. 부서별 평균 급여가 5000 이상인 부서 중
  2. 2005년 이후 입사한 사원만 조회하여
  3. 평균 급여가 높은 순으로 정렬
SELECT department_id AS 부서번호
     , COUNT(*) AS 사원수
     , ROUND(AVG(salary), 0) AS 평균급여
     , MAX(hire_date) AS 최근입사일
  FROM employees
-- 2005년 이후 입사한 사원만 조회
 WHERE hire_date > TO_DATE('2005-01-01', 'YYYY-MM-DD')
-- 부서별 평균 급여가 5000 이상인 부서
 GROUP BY department_id
HAVING AVG(salary) >= 5000
-- 평균 급여가 높은 순으로 정렬
ORDER BY 평균급여 DESC;

예제 2. 제품 판매 분석

  1. 2023년 분기별, 카테고리별 판매액 집계
  2. 총 판매액이 100만원 이상인 그룹만 표시
  3. 분기와 카테고리 순으로 정렬
SELECT TO_CHAR(sale_date, 'Q') AS 분기
     , product_category AS 카테고리
     , COUNT(*) AS 판매건수
     , SUM(sale_amount) AS 총판매액
     , AVG(sale_amount) AS 평균판매액
  FROM sales
-- 2023년 분기별,  
 WHERE sale_date BETWEEN TO_DATE('2023-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD')
-- 판매액 별,카테고리별 그룹
 GROUP BY TO_CHAR(sale_date, 'Q'), product_category
-- 총 판매액이 100만원 이상
HAVING SUM(sale_amount) >= 1000000
 ORDER BY 분기 ASC, 총판매액 DESC;

예제 3. 학생 성적 조회

  1. 각 학과별로 성적이 80점 이상인 학생들만 집계
  2. 학과 평균이 85점 이상인 그룹만 선택
  3. 평균 점수 순으로 정렬
SELECT department AS 학과
     , COUNT(*) AS 학생수
     , ROUND(AVG(score), 1) AS 평균점수
     , MAX(score) AS 최고점수
     , MIN(score) AS 최저점수
  FROM students
-- 성적이 80점 이상인 
 WHERE score >= 80
-- 학과  평규니 85점 이상인 그룹만
 GROUP BY department
HAVING AVG(score) >= 85
-- 평균 점수 순으로 정렬
 ORDER BY 평균점수 DESC;

예제 4. 고객 구매 패턴 조회(ANSI SQL)

  1. VIP 고객(연간 구매액 500만원 이상) 중
  2. 2022년에 구매한 고객별 구매 통계
  3. 총 구매액 순으로 정렬
SELECT 
    c.customer_id AS 고객ID,
    c.customer_name AS 고객명,
    COUNT(o.order_id) AS 주문횟수,
    SUM(o.order_amount) AS 총구매액,
    MAX(o.order_date) AS 최근구매일
FROM 
    customers c
JOIN 
    orders o ON c.customer_id = o.customer_id
WHERE 
    o.order_date BETWEEN TO_DATE('2022-01-01', 'YYYY-MM-DD') 
                     AND TO_DATE('2022-12-31', 'YYYY-MM-DD')
GROUP BY 
    c.customer_id, c.customer_name
HAVING 
    SUM(o.order_amount) >= 5000000
ORDER BY 
    총구매액 DESC;