SELECT
DEPARTMENT_ID
FROM EMPLOYEES
WHERE UPPER(department_id) = 80;
SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') FROM DUAL;
--SYSDATE(현재날짜) 24가없으면 12시간 24가 있으면 24시제 -, /(문자열 표시)
SELECT
TO_CHAR(SYSDATE,'D') AS D
, TO_CHAR(SYSDATE,'DAY') AS DAY
, TO_CHAR(SYSDATE,'DD') AS DD
, TO_CHAR(SYSDATE,'DY') AS DY
, TO_CHAR(SYSDATE,'HH') AS HH
, TO_CHAR(SYSDATE,'HH24') AS HH24
, TO_CHAR(SYSDATE,'MI') AS MI
, TO_CHAR(SYSDATE,'MM') AS MM
, TO_CHAR(SYSDATE,'MON') AS MON
, TO_CHAR(SYSDATE,'MONTH') AS MONTH
, TO_CHAR(SYSDATE,'SS') AS SS
, TO_CHAR(SYSDATE,'YEAR') AS YEAR
, TO_CHAR(SYSDATE,'YYYY') AS YYYY
FROM DUAL;
SELECT
TO_CHAR(HIRE_DATE,'YYYY/MM')
, FIRST_NAME || ' ' || LAST_NAME AS NAME
FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'YYYY') = '2005'
ORDER BY TO_CHAR(HIRE_DATE,'YYYY-MM') ASC;
-- 등식 = <- 'YYYY-MM' = '2005' (X) / 'YYYY-MM' = '2005-06'
-- ORDER BY ASC <-오름차순 DESC 내림차순
-- 2005년도에 입사한 사원들의 월별 입사 인원을 월 순으로 출력하시오.
SELECT TO_CHAR(HIRE_DATE,'YYYY-MM')
, COUNT(LAST_NAME)
-- 카운트 (LAST_NAME)
FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'YYYY') = '2005'
GROUP BY TO_CHAR(HIRE_DATE,'YYYY-MM')
--월별 -> GROUP BY
ORDER BY TO_CHAR(HIRE_DATE,'YYYY-MM') ASC;
CASE의 사용 ( SAME COUNT) anther way
SELECT DEPARTMENT_ID,
CASE DEPARTMENT_ID
WHEN 10 THEN 'ACCOUNTING'
WHEN 20 THEN 'RESEARCH'
WHEN 30 THEN 'SALES'
ELSE 'OPERATIONS'
END as "Dept Name" FROM EMPLOYEES;
SELECT TRUNC(SYSDATE,'YYYY') AS YYYY
, TRUNC(SYSDATE,'MM') AS MM
, TRUNC(SYSDATE,'DD') AS DD
FROM DUAL;
-- 용병 테이블 -> 명령어를 실행해볼때 사용
-- TRUNC <-[절삭] 정해진 기간으로 짤라낸다 OR 숫자는 정해진 자릿수까지
-- MM까지만 살리는것 DD까지만 살리는 것
--오늘 날짜
SELECT TO_CHAR(TRUNC(SYSDATE,'DD') , 'YYYY/MM/DD HH24:MI:SS')
FROM DUAL;
--내일 날짜
SELECT TO_CHAR(TRUNC(SYSDATE,'DD') +1, 'YYYY/,MM/DD HH24:MI:SS')
FROM DUAL;
SELECT TO_CHAR(SYSDATE + 1 , 'YYYY/MM/DD HH24:MI:SS')
FROM DUAL;
--이번달 시작날짜
SELECT to_char(trunc(sysdate,'mm') ,'yyyy/mm/dd hh24:mi:ss')
FROM dual ;
--다음달 시작날
SELECT to_char(trunc(add_months(sysdate, + 1),'mm') ,'yyyy/mm/dd hh24:mi:ss')
FROM dual ;
SELECT sysdate -1 FROM dual; -- 현재시간 - 1일
SELECT sysdate -1/24 FROM dual; -- 현재시간 - 1시간
--
SELECT sysdate -1/24/60 FROM dual; -- 현재시간 - 1분
SELECT sysdatea-1/24/60/60 FROM dual; -- 현재시간 - 1초
;
SELECT TO_DATE('19990220181030','YYYYMMDD HH24MISS')
FROM DUAL;
--오류 주의 TO_DATE('199-902-201-81-030','YYYYMMDDHH24MISS')<-X
--오류 주의 TO_DATE('19990220181030','YYYY-MM-DD-HH 24MISS')<-O
SELECT SYSDATE, SYSDATE - TO_YMINTERVAL('1-1') FROM DUAL;
--1년빼고 1월 빼고 / -를 +로 만들면 10년후의 약속
;;;;
SELECT SYSDATE
, EXTRACT(YEAR FROM SYSDATE) AS YEAR
, EXTRACT(MONTH FROM SYSDATE) AS MONTH
, EXTRACT(DAY FROM SYSDATE) AS DAY
FROM DUAL;
--DECODE 함수
-- DECODE 함수는 조건에 따라 데이터를 다른 값이나 컬럼값으로 추출 할 수 있다.
-- DECODE(VALUE, IF1, THEN1, IF2, THEN2...) 형태로 사용 할 수 있다.
-- VALUE 값이 IF1일 경우에 THEN1 값을 반환하고, VALUE 값이 IF2일 경우에는 THEN2 값을 반환한다.
-- DECODE 함수 안에 DECODE함수를 중첩으로 사용 할 수 있다.
SELECT
DEPARTMENT_ID
, DECODE(DEPARTMENT_ID, 10, 'ACCOUNTING',
20, 'RESEARCH',
30, 'SALES', 'OPERATIONS') NAME
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (10,20,30)
ORDER BY DEPARTMENT_ID ASC;
--DEPARTMENT_ID가 10번이면 ACCOUNTTING로 바꾸라
--IN절 -> 10, 20, 30 이 되어있는 나머지는 띄우지 않는다.
--10, 20, 30 이 아니면 OPERATIONS<-로 표시하라
--가독성을 위해서 표지를 많이 사용해야 한다!
'IT > Oracle' 카테고리의 다른 글
오라클 함수정리 4탄 (그룹함수) (0) | 2015.07.18 |
---|---|
오라클 정규화 (0) | 2015.07.15 |
오라클 삭제 (oracle 레지스트리 완전삭제) (0) | 2015.04.17 |
오라클 함수정리 2탄 (0) | 2014.12.15 |
오라클 함수정리 1탄 (0) | 2014.12.15 |