기록해! 정리해!

7-4(bigdata) 본문

Oracle

7-4(bigdata)

zsuling 2022. 5. 24. 16:06

 

bigEmployees.csv
16.04MB

12) 문자열함수

 

- 엑셀 불러오기 : 접속 - system - 테이블 -> 데이터 임포트 (구분자: ;)

- 테이블에 형성된 거 확인

- SQL 확인


  CREATE TABLE "SYSTEM"."BIGDATA" 
   ( "EMP_NO" NUMBER(7,0), 
"BIRTH_DATE" DATE, 
"FIRST_NAME" VARCHAR2(26 BYTE), 
"LAST_NAME" VARCHAR2(26 BYTE), 
"GENDER" VARCHAR2(26 BYTE), 
"HIRE_DATE" DATE
   )  --여기까지가 기본문

PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

 

- 위 쿼리를 복사해서 새 테이블 형성

 CREATE TABLE Test002  
   (
    "EMP_NO" NUMBER(7,0), 
"BIRTH_DATE" DATE, 
"FIRST_NAME" VARCHAR2(26 BYTE), 
"LAST_NAME" VARCHAR2(26 BYTE), 
"GENDER" VARCHAR2(26 BYTE), 
"HIRE_DATE" DATE
   )

   
   select * from Test002;

 

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

 select * from bigdata;

 

   1. 생년월일에서 값이 5로 시작되는 사람을 출력하시오
   select * from bigdata
   where BIRTH_DATE like'5%';
   

   --하는 사람의 수
   select count(*) from bigdata
   where BIRTH_DATE like'5%';

 

  2. 52년생 데이터를 test002에 추가하시오
   insert into test002
   select * from bigdata
   where BIRTH_DATE like '52%';

 

   select * from test002;

 

  3. test003 만들어서 생년월일을 년,월,일로 바꾸시오

   select substr(BIRTH_DATE,1,2)||'년'||substr(BIRTH_DATE,4,2)||'월'||substr(BIRTH_DATE,7,2)||'일' as "생년 월일"
   from test002;
   
   select emp_no,
   substr(BIRTH_DATE,1,2)||'년'||substr(BIRTH_DATE,4,2)||'월'||substr(BIRTH_DATE,7,2)||'일' as "생년 월일",
   first_name,
   last_name,
   gender,
   hire_date
   from test002;
   

   4. 한글성별을 추가하시오
   select emp_no,
   substr(BIRTH_DATE,1,2)||'년'||substr(BIRTH_DATE,4,2)||'월'||substr(BIRTH_DATE,7,2)||'일' as "생년 월일",
   first_name,
   last_name,
   gender,
   case 
    when gender='F' then '여성'
    when gender='M' then '남성'
    else '기타'
   end as "성별",
   hire_date
   from test002;

 

 5. 80년대, 90년대 입사연도별을 추가하시오
   select emp_no,
   substr(BIRTH_DATE,1,2)||'년'||substr(BIRTH_DATE,4,2)||'월'||substr(BIRTH_DATE,7,2)||'일' as "생년 월일",
   first_name,
   last_name,
   gender,
   case 
    when gender='F' then '여성'
    when gender='M' then '남성'
    else '기타'
   end as "성별",
   hire_date,
   case
    when substr(hire_date,1,2)>=90 then '90년도입사'
    when substr(hire_date,1,2)<90 then '80년도입사'
   end as "입사구분"
   from test002;
   
   select hire_date,
   case
    when hire_date like '8%' then '80'
    when hire_date like '9%' then '90'
    else '기타'
   end as "입사구분"
   from test002;

 

6. 뷰 생성

  create or replace view v_bigdata1
   as

....

 

7. 성별에 따른 인원 수

   select 성별,count(성별) 인원수 from v_bigdata1
   group by 성별;

 

8. 위의 출력 숫자 0,2,5 을 한글 공,이,오 으로 출력하기
   select 성별, translate(count(성별),'025','공이오') 인원수 from v_bigdata1
   group by 성별;

  --1:1로 매칭해서 변환해줌

 

 9. 첫번째 이름의 길이를 구하시오
   select first_name 이름 ,length(first_name) 길이 from v_bigdata1;
   

   select first_name 이름 ,length(first_name) 길이 from v_bigdata1
   order by 길이 desc;
   
10. 이름 다 대문자로 하고 20자 맞추기
   select Rpad(upper(first_name),20,'#') 이름 ,length(first_name) 길이 from v_bigdata1
   order by 길이 desc; --Rpad:#을 오른쪽에 작성, Lpad

 

11. trim
    select Ltrim('  1234  ') 값1, trim(  '1234'  ) 값2, Rtrim('  1234  ') 값3 from dual;

 

12. 올림 버림 반올림
   
   select ceil (4.1), ceil(4.5), ceil(4.0)
   from dual; --5 5 4 / 4보다 크면 무조건 올림
    
   select floor (4.1), floor(4.5), floor(4.0)
   from dual; --4 4 4
   
   select round(4.7), round(4.5), round(4.1)
   from dual;  --5 5 4 

 

 

'Oracle' 카테고리의 다른 글

7-예제3(select)  (0) 2022.05.24
7-예제2(big data-trigger)  (0) 2022.05.24
7-3 (프로시저)  (0) 2022.05.24
7-2  (0) 2022.05.24
6-SQL 기본문법 정리  (0) 2022.05.24
Comments