본문 바로가기
수업 일지/JDBC

30일차 - ORDER BY/GROUP BY/자릿수 지정/HAVING/절 순서/ALL

by 쿠쿠씨 2022. 2. 14.
반응형

예제: SaleByDao 클래스

SELECT 메소드

→ SELECT * FROM V_BY_CUSTNO ; 쿼리를 실행하고 값을 rs에 저장합니다.

→ SaleByCustom 객체에, rs에 저장된 값을 한 행씩 가져와 저장합니다.

→ List에 SaleByCustom 객체를 add 합니다.

→ List를 반환합니다.

 

ORDER BY 절

 

ORDER BY 기준열_이름 (ASC) ;

 ORDER BY 절에 키워드를 입력하지 않으면 오름차순합니다. (또는 ASC 키워드)

ORDER BY 기준열_이름 DESC ;

 ORDER BY 절에 DESC 키워드를 입력하면 내림차순합니다.

 

GROUP BY 절

 

집계함수(통계함수, 그룹함수)

→ COUNT, MAX, MIN, SUM, AVG, 외에 분산, 표준편차, 중앙값 등의 함수도 있습니다.

 

GROUP BY 

→ 특정 컬럼으로 그룹화하고 그에 대해서 집계함수를 적용합니다

→ EX) 부서별 연봉 평균, 지역별 직원 수, 부서별 직원 수, ... 

 

예시

→ 그룹 함수를 조회합니다.

 

→ 오류 : 그룹함수와 일반 컬럼을 함께 조회할 수 없습니다.

 

→ GROUP BY를 적용하여 JOB_ID 별로 COUNT, AVG를 구합니다.

→ 그룹 함수 결과와 함께 조회할 수 있는 컬럼은 그룹화(GROUP BY) 컬럼만 가능합니다.

 

→ GROUP BY를 적용하여 DEPARTMENT_ID 별로 COUNT, AVG를 구합니다.

→ *부서별 집계

 

→ DEPARTMENT 테이블과 위의 *부서별 집계를 JOIN한 후 모든 열을 조회합니다.

→ COUNT 함수는 "인원수", AVG 함수는 "평균"으로 별칭을 주어 조회합니다.

 

→ 위의 결과를 원하는 열만 조회합니다.

 

→ 위의 결과를 인원수를 기준으로 내림차순합니다.(DESC)

 

→ 위의 결과를 평균을 기준으로 오름차순합니다.

 

자릿수 지정함수

 

내림: TRUNC

올림: CEIL

반올림: ROUND

→ ROUND(숫자, 1) : 소수점 둘째 자리에서 반올림(소수점 첫째 자리까지 출력)

→ ROUND(숫자, 0) : 소수점 첫째 자리에서 반올림(정수 출력)

→ ROUND(숫자, -1) : 일의 자리에서 반올림(일의 자리 = 0)

 

→ 평균 값을 소수점 첫째 자리에서 반올림합니다.

 

HAVING 절

 

→ 집계함수의 결과 값에 대한 조건으로 WHERE 절을 사용할 수 없습니다.

→ HAVING 절로 집계함수 값을 조건식에 사용할 수 있습니다.

→ 일반 컬럼도 사용할 수 있습니다.

* 순서

FROM → WHERE → GROUP BY → HAVING → ORDER BY

 

ALL 연산자

 

→ 조건식에서 사용시 모든 값과 비교하여 조건이 맞는 행들을 반환합니다.

 

ALL 연산으로 데이터 조회

→ JOB_ID가 'ST_CLERK'인 직원의 salary의 모든 값과 비교해서 salary가 더 큰 사람의 데이터를 보여줍니다. 

→ 즉,  JOB_ID가 'ST_CLERK'인 직원들의 salary가 가장 높은 사람보다 salary가 더 높은 사람의 데이터를 보여줍니다.

→ 데이터를 salary 값으로 오름차순하고 보여줍니다.

 

MAX 함수로 데이터 조회

→ JOB_ID가 'ST_CLERK'인 직원들의 salary의 최대값보다 salary가 높은 사람의 데이터를 보여줍니다.

→ 데이터를 원래 employee 테이블 순서로 보여줍니다.

 

예제: 두 개 테이블 JOIN하여 데이터 출력하기

custno, custname,grade, 매출 합계를 출력합니다.

grade는 A → VIP, B → 일반 으로 바꿔서 출력합니다.

매출이 큰 고객부터 출력합니다.

→ 테이블 이름에 별칭으로 한글을 거의 사용하지 않는다고 합니다.

 

 

공공 데이터 조회

 * data.go.kr 에서 데이터 자료를 다운받을 수 있습니다.(csv파일)

반응형

댓글