예제: 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파일)
'수업 일지 > JDBC' 카테고리의 다른 글
32~37일차 - 미니 팀 프로젝트 (0) | 2022.02.25 |
---|---|
31일차 - 데이터 가져오기/내보내기/자바 GUI (0) | 2022.02.15 |
29일차 - 싱글턴/Dao 클래스/네트워크 용어 정리 (0) | 2022.02.11 |
28일차 - SELECT/DISTINCT/UPDATE/DELETE (0) | 2022.02.10 |
댓글