본문 바로가기
국비교육/JAVA

1월 9일 국비교육 29일차

by Diligejy 2019. 1. 9.

#1

부서별 총합 뿐만 아니라 전체 총합 및 세부 내역을 보고 싶을 때

SELECT DEPTNO, ENAME SUM(SAL)

FROM EMP

GROUP BY ROLLUP(DEPTNO, ENAME)


Q1. 직위별 사원의 이름과 월급을 출력하라.

SELECT JOB, ENAME, SUM(SAL)

FROM EMP

GROUP BY ROLLUP(JOB, ENAME)



CUBE사용하기

CUBE 연산자도 GROUP BY문과 함께 사용된다. 이것은 GROUP BY 문에서 명시한 전체 컬럼에 대해서 추가적인 요약정보를 단계적으로 만들어준다.


부서별과 직위별 월급과 총합

SELECT DEPTNO, JOB, SUM(SAL)

FROM EMP

GROUP BY CUBE(DEPTNO, JOB);


Q1. 

부서별 총월급을 구하되 30번부서를 제외하고, 그 총월급이 8000달러 이상인 부서만 나오게하고,

총월급이 높은 순으로 출력하라.


SELECT DEPTNO, SUM(SAL)

FROM EMP

WHERE DEPTNO != 30

HAVING SUM(SAL) >= 8000

GROUP BY DEPTNO

ORDER BY 2;


Q2.

사원테이블의 데이터를 이용해서 아래와 같이 출력하자.

0000님의 사원번호는 00이고 매니저는 00입니다. 



SELECT FIRST_NAME||'님의 사원번호는' || EMPLOYEE_ID||'이고 매니저는' || MANAGER_ID||'입니다.'

  2  FROM EMPLOYEES;


#2

SQL> CREATE TABLE TEST(

  2  ID VARCHAR2(20)

  3  );


-> 이후 구조확인 DESC TEST;

삭제는 DROP TABLE TEST;


SQL> CREATE TABLE TEST(

  2  CHARTYPE CHAR(20),

  3  VARCHARTYPE VARCHAR2(20)

  4  );


-> 이후 구조확인 DESC TEST;

INSERT INTO TEST VALUES('ENCORE', 'ENCORE');

INSERT INTO TEST VALUES('엔코아', '엔코아');


SELECT LENGTH(CHARTYPE), LENGTH(VARCHARTYPE) FROM TEST;


->결과


LENGTH(CHARTYPE) LENGTH(VARCHARTYPE)

---------------- -------------------

              20                   6

              14                   3



해석

20 ENCORE 6 'ENCORE'

14  엔코아  3 엔코아


계산 방법

1. 한글 1문자 = 3BYTE * 3 = 9

2. 전체 길이 - 데이터 길이 = 11

3. 데이터 3문자 + 11(여유공간 문자) = 14


EX) 대한민국 

1. 3* 4 = 12

2. 20 - 12 = 8

3. 데이터 4문자 4 + 8(여유공간 문자) = 12 


#3

INSTR 

찾는 문자(열)이 지정한 위치부터 지정한 회수만큼 나타난 시작 위치를 반환하는 함수


#4

CREATE TABLE TEST01(

  2  TEST VARCHAR2(20)

  3  );


INSERT INTO TEST01 VALUES('aaa@a.com');

INSERT INTO TEST01 VALUES('bbb@b.com');

INSERT INTO TEST01 VALUES('ccc@c.com');

INSERT INTO TEST01 VALUES('ddd@d.com');

INSERT INTO TEST01 VALUES('ddd3@d.com');


Q1. TEST01 테이블에서 TEST의 @의 위치를 찾는다.

Q2. TEST의 COLUMN에서 왼쪽에서 첫 번째 d의 위치를 찾는다.

SELECT INSTR(TEST, 'd', 1, 1) FROM TEST01;

Q3. TEST의 COLUMN에서 왼쪽부터 두번째 d의 위치를 찾는다.

SELECT INSTR(TEST, 'd', 1, 2) FROM TEST01;


#5

주어진 컬럼/문자열에 임의의 문자(열)을 왼쪽/오른쪽에 덧붙여 길이 N의 문자열을 반환하는 함수

(데이터 타입이 다른 경우 정렬을 가시적으로 해줄 때 사용)

LPAD

RAPD


cf. SELECT LPAD(TEST, '0') FROM TEST01; 

오류가 안나는 이유? -> 


#6

 SELECT TRIM (32 FROM '  tech  ') FROM DUAL;

이건 오류뜸ORA-30001: 트림 설정은 하나 문자만 가지고 있어야

합니다


SELECT SUBSTR(RTRIM(CHARTYPE), -1, 2), SUBSTR(VARCHARTYPE, -1, 2) FROM TEST;


타입이 다른 경우 민감하므로 TRIM이라든지 다른 걸 주어야한다.


#7

SELECT ROUND(125.315) FROM DUAL;

SELECT ROUND(125.315, 0) FROM DUAL;

SELECT ROUND(125.315, 1) FROM DUAL;

SELECT ROUND(125.315, -1) FROM DUAL;

SELECT ROUND(125.315, -3) FROM DUAL;


#8

SYSDATE


#9

SELECT ENAME, HIREDATE, TO_DATE(ADD_MONTHS(HIREDATE, 240), 'yy/MM/dd') FROM EMP;


#10

NUMBER - CHARACTER - DATE


만약 NUMBER에서 DATE로 바꾸고 싶다면 CHARACTER를 한 번 거쳐야한다.


NUMBER -> CHARACTER  = TO_CHAR

CHARACTER -> DATE = TO_DATE

DATE -> CHARACTER = TO_CHAR

CHARACTER -> NUMBER = TO_NUMBER


#11

SELECT ENAME, SAL, TO_CHAR(SAL, 'L9,999') FROM EMP;


SELECT ENAME, SAL, TO_CHAR(SAL, '$9,999') FROM EMP;


#12

SELECT * FROM TEST WHERE CHARTYPE = 'TWENTY NINETEEN';


#13

 SELECT TO_CHAR(SYSDATE, 'YYYY-fmMM-DD DAY') FROM DUAL;


#14

Q1. 사원 테이블에서 사원의 이름과 입사일을 00년 00월 00일에 입사하셨습니다.


'국비교육 > JAVA' 카테고리의 다른 글

1월 11일 31일차  (0) 2019.01.11
1월 10일 국비교육 30일차  (0) 2019.01.10
1월 8일 국비교육 28일차  (0) 2019.01.08
1월 7일 국비교육 27일차  (0) 2019.01.07
1월 4일 국비교육 26일차  (0) 2019.01.04

댓글