일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬차트
- 파이썬시각화
- python수업
- 파이썬데이터분석주피터노트북
- 파이썬
- python알고리즘
- sql연습하기
- 주피터노트북
- python데이터분석
- SQL수업
- 판다스그래프
- 파이썬알고리즘
- 주피터노트북데이터분석
- 주피터노트북맷플롯립
- 주피터노트북그래프
- 파이썬데이터분석
- Python
- 파이썬수업
- SQLSCOTT
- 데이터분석시각화
- 맷플롯립
- 주피터노트북판다스
- matplotlib
- 팀플기록
- sql따라하기
- sql연습
- SQL
- 판다스데이터분석
- 수업기록
- 파이썬크롤링
- Today
- Total
목록SQL (29)
IT_developers
group by 결과값을 원하는 열로 묶어서 출력하고 싶을 때 사용 구문이 길어지면 순서가 중요해짐. 어떤 거 부터 실행이 되느냐 엑셀에서 부분합과 같음 group by ~ having : 그룹을 잡을 때 조건을 주는 경우 1) 부서별 평균 급여 출력 SELECT deptno, AVG(sal) -- ORA-00937: not a single-group group function FROM emp; ORA-00937: not a single-group group function ==> 오류 메세지 오류 해결) 부서별 평균 급여 출력 SELECT deptno, AVG(sal) FROM emp GROUP BY deptno; 2) 부서별, 직책별 급여 평균 출력 SELECT deptno, job, AVG(sal)..
다중행함수(여러개를 묶어서 한번에 해결) : SUM(), COUNT(), MAX(), MIN(), AVG() ※ SUM() : 합계 1) 추가수당 합계 : null은 카운트 되지 않음 SELECT SUM(comm) FROM emp; 2) 중복인 값은 제외하고 합계 구하기 SELECT SUM(DISTINCT sal), SUM(sal) FROM emp; ※ COUNT() : 숫자 세기 3) emp 테이블 사원 수 출력 SELECT COUNT(*) FROM emp; 전체적으로 구할 땐 * . * 대신 칼럼명 사용 가능 4) 부서번호가 30번인 사원 수 출력 SELECT COUNT(*) FROM emp WHERE deptno = 30; ※ MAX() : 최댓값, MIN() : 최솟값 5) 급여의 최대값 SELE..
NULL 처리 함수 : NVL(), NVL2() DCODE 함수 CASE문 1) comm이 null SELECT empno, ename, sal, comm, sal + comm FROM emp; 2) nvl(널값 열, 널인 경우 사용할 값) SELECT empno, ename, sal, nvl(comm, 0), sal + nvl(comm, 0) FROM emp; null 인 경우 0을 대입 3) nvl2(널값 열, 널이 아닐 경우 사용할 값, 널인 경우 사용할 값) SELECT empno, ename, sal, nvl2(comm, 'O', 'X'), sal + nvl2(comm, sal * 12 + comm, sal * 12) FROM emp; ※ decode ( 대상이 될 열 혹은 데이터, 조건1, 조..
형변환 함수(문자를 숫자로 변경 ) : TO_CHAR(), TO_NUMBER(), TO_DATE() 1) empno + '500' SELECT empno, ename, empno + '500' FROM emp WHERE ename = 'SMITH'; EMPNO == NUMBER, int 타입 알아서 연산을 해줌. 2) 'abcd' + empno SELECT empno, ename, 'abcd' + empno FROM emp WHERE ename = 'SMITH'; "invalid number" : abcd는 숫자로 변경 할 수 없기 때문에 오류 3) TO_CHAR() : 숫자, 날짜 데이터를 문자 데이터로 변환 SELECT to_char(sysdate, 'YYYY/MM/DD HH24:MI:SS') AS ..
숫자함수 : ROUND(), TRUNC(), CEIL(), FLOOR(), MOD() 날짜함수 : SYSDATE, CURRENT_DATE, CURRENT_TIMESTAMP 1) round() : 반올림 SELECT round(1234.5678) AS round, round(1234.5678, 0) AS round1, round(1234.5678, 1) AS round2, round(1234.5678, 2) AS round3, round(1234.5678, - 1) AS round4, round(1234.5678, - 2) AS round5 FROM dual; 자리를 지정하지 않으면 기본 값으로 출력. 기본값은 0 2) trunc() : 버림 SELECT trunc(1234.5678) AS trunc, t..
오라클 함수 : 대소문자 변경, 문자열 길이, 문자열 추출, 특정 문자 위치 찾기, 문자 변경, 문자열 연결, 문자열 공백 ※ 대소문자 변경 : UPPER(), LOWER(), INITCAP() 1) 대소문자 변경 SELECT ename, upper(ename), lower(ename), initcap(ename) FROM emp; UPPER() : 대문자로 변경 LOWER() : 소문자로 변경 INITCAP() : 첫 글자만 대문자로 변경 ※ 문자열 길이 : LENGTH(), LENGTHB() 2) 문자열 길이 SELECT length('한글'), lengthb('한글'), length('ab'), lengthb('ab') FROM dual; LENGTH() : 문자열의 길이 LENGTHB() : 문자..
집합 연산자 : union, minus, intersect ※ UNION - 합집합 1) deptno =10 or deptno=20 사원 조회 SELECT empno, ename, job FROM emp WHERE deptno = 10 UNION SELECT empno, ename, job FROM emp WHERE deptno = 20; UNION 사용시 컬럼명을 동일하게 사용하기 중복 값을 알아서 제거 ex) SELECT empno, ename, job FROM emp WHERE deptno = 10 UNION SELECT mgr, ename, job FROM emp WHERE deptno = 20; 데이터 자료 타입만 맞으면 출력 가능. empno와 mgr이 넘버 타입이 같기 때문에 출력이 가능함...
BETWEEN, LIKE, 와일드 카드, IS NULL, IS NOT NULL ※ BETWEEN A AND B 1) 급여가 2000이상 3000이하인 사원 조회 SELECT * FROM emp WHERE sal BETWEEN 2000 AND 3000; 2) 급여가 2000이상 3000이하가 아닌 사원 조회 SELECT * FROM emp WHERE sal NOT BETWEEN 2000 AND 3000; ※ LIKE 연산자와 와일드카드(= _ , %) 3) 사원 이름이 S로 시작하는 사원 정보 조회 _ : 어떤 값이든 상관없이 단 한개의 문자 데이터 % : 어떤 값이든 상관없고 길이와 상관없이 모든 문자 데이터 SELECT * FROM emp WHERE ename LIKE 'S%'; 4) 사원 이름의 두번..