to_number
진짜 문자를 바꾸는게 아니라 문자형 인 숫자를 숫자형으로 변환시킨다.
nvl : null value
ex) nvl(comm,0) : comm 이 null 이면 0으로 대치
800 + null = null 값으로 나오게 되는데, 이런 경우 null 이 0의 역할을 해서 800 + null = 800 으로 계산하게끔 하고 싶을 때
null 값을 특정한 값으로 대치하고 싶을 때 사용
DB 자체적으로 null 대신 0 으로 처리할 때에도 사용하지만, DB -> java 로 불러올 때, data 가 null 이면 null point error 가 발생할 수 도 있다.
ex) nvl2(col1,col2,col3) : col1 이 null 이 아니면 col2 를 사용하고, null 이면 col3 을 사용한다
null 값을 다른 table 을 이용한 값으로 처리할 때 사용
student table 에서 deptno2 가 null인 값은 0으로 치환하고 (nvl 활용) deptno1 이 201 이거나 103인 데이터를 뽑아 이름, 아이디, 주민, deptno2 를 출력하세요.
decode 함수 : if 문과 유사
ex) decode(deptno,101,'computer','etc') : deptno 가 101 이면 'computer', 101 이 아니면 'etc' 로 출력
동시에 여러개 적용
decode 를 활용해서 deptno 에 맞는 부서 이름 찾아 출력하기
case : 경우의 수 함수
when : ~ 일 경우
then : 그 결과
else : 그 외의 경우의 결과
null 값을 배제하고 필드의 값의 개수
그룹함수는 그룹함수끼리만 사용가능 (표현해야하는 row 의 개수가 다르면 사용 불가)
sum 함수 : 총합
null 값을 배제하고 필드의 값을 모두 더한 값
avg 함수 : 평균
null 값을 배제한 값들의 평균 값
max : 최대값 함수
min : 최소값 함수
stddev : 표준편차
variance : 분산
groupby : 그룹화
deptno로 그룹화
select deptno, sal from empPK group by deptno;
위의 쿼리 처럼 그룹화 한 필드와 일반 필드를 같이 select 하게 되면 오류가 남.
좀 더 명확한 이유는
실행순서에 따라 group by 가 select 보다 먼저 실행되는데,
그룹화 한 필드의 row 와 그룹화 안한 필드의 row 가 일치하지 않기 때문에 오류가 난다
그룹화한 필드끼리는 같이 select 할 수 있다.
having : 그룹화 조건
student table 에서 deptno1 과 weight 를 이용한 그룹화를 적용, 과별로 (deptno1 별로) 학생의 몸무게 합계를 구하기
professor table 에서 deptno 를 그룹화해서 bonus 를 받는 사람의 수와 보너스 합계를 deptno 오름차순으로 출력하세요
연도별로 그룹화
연도별로 (10단위까지) 그룹화
연도별로 (10단위까지) pay 의 개수와 total 금액
select 에서 aliasing 이 들어간 후에 order by 가 실행되기 때문에 order by 에서 aliasing 한 별칭으로 정렬할 수 있다.
오늘 sql 끝
Linux 미션
day 7 project, com.tech.gt002.car4 package, BenzClass.java, CarClass.java, CarMakeClass.java, EquusClass.java, SonataClass.java 출력하기