일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Stock
- 맥
- 자바스크립트
- 주식 청약
- java
- linux
- 6월 공모주 청약 일정
- Eclipse
- 공모주
- 오라클
- JavaScript
- MYSQL
- jquery
- codeigniter
- Stock ipo
- Oracle
- 코드이그나이터
- html
- SQL
- 주식 청약 일정
- 자바
- 주식
- php
- IPO
- 제이쿼리
- 공모주 청약
- css
- 공모주 청약 일정
- 7월 공모주 청약 일정
- 리눅스
- Today
- Total
개발자의 끄적끄적
[sql / oracle] SQL 활용 - 테이블 생성, 날짜 계산 ,CASE WHEN [펌] 본문
[sql / oracle] SQL 활용 - 테이블 생성, 날짜 계산 ,CASE WHEN [펌]
기본적인 구조는 아래와 같습니다 !
CREATE TABLE (원하는 테이블명)
(
(원하는 칼럼명) (원하는데이터타입)(길이) (NULL값 여부)
CONSTRAINT xpk테이블명_table PRIMARY KEY(키 지정할 칼럼명)
);
테이블 생성
위 형식으로 예시를 하나 만들어보면
CREATE TABLE customer
(
cus_id varchar2(5) NOT NULL /*고객번호*/
,sex char(1) /*성별*/
,age varchar2(20) /*연령대*/
,CONSTRAINT xpkdemo_table PRIMARY KEY(cus_id)
);
참고로 /*~ */ 는 주석처리되어 쿼리에 아무런 영향도 미치지 않습니다 ~
CONSTRAINT xpkdemo_table PRIMARY KEY(cus_id)
↑ 이 부분은 내가 만들 테이블에서 값을 식별할 수 있는 식별자를 정하는 것입니다.
고객 번호라는 것은 중복없이 고객 한명에게 부여되는 유일한 값이므로 값을 식별할 수 있습니다.
TO_DATE를 활용한 날짜계산
다음은 문자열 형태로 저장된 날짜를 계산하는 방법입니다.
날짜 값이 '20150102'와 같이 문자형으로 들어가있으면
TO_DATE 함수를 이용해서 날짜로 바꿔줄 수 있습니다.
EX)
문자형으로 저장된 날짜 컬럼이 pdate,라고 지정해놨다고 하고,
TO_DATE(pdate, 'YYYY MM DD') 이렇게 하면 20150102가 날짜 데이터로 바뀌게 됩니다.
그러면 pdate에는 문자형으로 날짜 여러개가 저장되어 있는데 최소값과 최대값을 빼보겠습니다.
max(to_date(pdate,'YYYY MM DD'))- min(to_date(pdate,'YYYY MM DD')) <- 함수의 대소문자 구분은 상관없습니다 ~
CASE WHEN (프로그래밍 if~else)
마지막으로 프로그래밍에서 쓰는 if~else문과 비슷한 case when입니다.
기본 구조는
case when 조건 then 참 실행 else 거짓 실행 end
조건이 맞으면 참 실행 아니면 거짓 실행 쉽죠?
EX) 우리 회사 고객의 구매 일수를 알고 싶은데 어떻게 하지?
구매 일수라는 것은 실제 구매가 일어난 날짜만을 계산해야 합니다.
구매한적이 없는 고객까지 계산하면 안되겠죠?
※ 전체 쿼리가 아닌 쿼리 중 case when 부분만 가져온 것입니다.
count(distinct(case when pdate is not null then pdate else null end))
해석 : 구매날짜가 NULL값 즉, 비어 있지 않으면 pdate를 출력해라, 아니면(비어있으면) null 값을 출력해라
동일한 날짜는 중복을 제거(distinct)하고 count한다.
case when절 정말 유용하게 쓸 수 있을 것 같습니다 !!
'개발 > sql' 카테고리의 다른 글
[sql/oracle] 오라클 CASE WHEN 표현식 사용법 [펌] (0) | 2020.10.07 |
---|---|
[sql/oracle]오라클 오늘 날짜와 특정 날짜를 비교하여 if문으로 조건문 넣기 [펌] (0) | 2020.10.07 |
[sql/oracle] 오라클 함수 모음 [펌] (0) | 2020.10.05 |
[sql/oracle] 서브쿼리 Subquery 활용_ 오라클 서브쿼리 [펌] (0) | 2020.09.28 |
[OracleDB] 오라클 (현재)날짜, 어제날짜, 년월일시분초, 날짜연산 하기 [펌] (0) | 2020.09.28 |