1. 별칭 달기

우선 구조를 이해하기 위해 하나의 예를 먼저 달아본다.

1
2
3
-- '실적정보'라는 문자열 수식을 'MEASURE_NAME'이라는 컬럼에 담는다.
SELECT '실적정보' AS MEASURE_NAME, A.*
FROM KOPO_PRODUCT_VOLUME A
cs

위에 쿼리가 어색하다면 아래를 본다. 동일한 표현이다.

1
2
3
4
5
6
7
SELECT
    '실적정보' AS MEASUER_NAME, 
    A.REGIONID,       -- 지역정보
    A.PRODUCTGROUP,   -- 상품정보
    A.YEARWEEK,       -- 주차정보
    A.VOLUME          -- 판매량
FROM KOPO_PRODUCT_VOLUME A
cs

 

SELECT 절을 먼저 보자. '실적정보'라는 문자열을 'MEASURE_NAME'이라는 컬럼에 담는다. (별칭 달기) (저장되는 것은 아님)

즉, 수식 AS 컬럼명 구조다.

그리고 SELECT에 A.이 이해가 잘 가지 않을텐데, 주소를 적을 때도 우리나라는 '서울특별시, 강서구, 화곡동...'으로 가지만 서구식으로 하면 '화곡동, 강서구, 서울특별시'라는 것을 생각해보자.

SELECT에 A.를 보기 전에 FROM 절을 먼저 보자. KOPO_PRODUCT_VOLUME 테이블을 A로 별칭을 달아줬다.

따라서, SELECT 절의 A.REGIONID는 'A에서 REGIONID'라는 뜻이다. 즉, A는 테이블이고, REGIONID는 컬럼명이니, A테이블의 REGIONID 컬럼을 가리키는 것이다.

(KOPO 계정의 KOPO_PRODUCT_VOLUME 테이블을 지칭할 때 역시 KOPO.KOPO_PRODUCT_VOLUME 로 표현하는 것을 기억하자. 이것 역시 단순하게 생각하면 'KOPO에서 KOPO_PRODUCT_VOLUME'라는 뜻이고, KOPO는 계정, KOPO_PRODUCT_VOLUME은 테이블이니, KOPO 계정의 KOPO_PRODUCT_VOLUME 테이블을 가리키는 것이다.)

 

Expression은 보통 조회 용도로 사용하는데 조회한 데이터를 저장까지 하고 싶은 경우 쿼리 위에 CREATE 절을 하나 추가해준다.

1
2
3
4
5
6
7
8
CREATE TABLE MY_TEST_TABLE AS
SELECT
    '실적정보' AS MEASUER_NAME,
    A.REGIONID,       -- 지역정보
    A.PRODUCTGROUP,   -- 상품정보
    A.YEARWEEK,       -- 주차정보
    A.VOLUME          -- 판매량
FROM KOPO_PRODUCT_VOLUME A
cs

 

 

'특정 문자열'이 아닌 컬럼의 값을 이용할 수도 있다.

1
2
3
4
SELECT
    REGIONID || '_' || PRODUCTGROUP AS PLANID,    -- REGIONID + '_' + PRODUCTGROUP 을 'PLANID'라는 컬럼으로 담는다.
    REGIONID          -- 지역코드
FROM KOPO_PRODUCT_VOLUME
cs

 

REGIONID + '_' + PRODUCTGROUP 을 'PLANID'라는 컬럼으로 담아준다.

 

Q ) KOPO_PRODUCT_VOLUME에서 Expression을 활용하여 맨 앞에 MeasureID 이름의 컬럼으로 'KOPO_D510' 값이 생성되도록 조회하세요.

1
2
3
4
SELECT
    'KOPO_D510' AS MEASURE_NAME,
    A.*
FROM KOPO_PRODUCT_VOLUME A
cs

 

 

2. 계산

엑셀을 생각하면 된다. Expression 수식은 단순히 특정 컬럼을 하나 만들어 별칭을 다는 것 뿐 아니라 수식으로써의 기능을 한다.

1
2
3
4
SELECT
    A.YEARWEEK + A.VOLUME AS TEST,    -- (YEARWEEK + VOLUME) 을 'TEST라는 컬럼에 담는다다.
    A.*
FROM KOPO_PRODUCT_VOLUME A
cs

 

조회한 데이터를 저장하기

위에서도 다루었지만 다시 한 번 다루어본다. Expression은 다양한 방법으로 조회를 도와주는 임시 수식 기능을 한다. 하지만 해당 데이터를 저장할 필요가 있다면 따로 테이블을 복제하고 삽입할 필요 없이 바로 위에 내용을 저장할 수 있다.

SELECT TABLE OOO AS

만 붙여주면 된다.

1
2
3
4
5
CREATE TABLE STABLE AS
SELECT
    YEARWEEK+VOLUME AS TEST,
    A.*
FROM KOPO_PRODUCT_VOLUME A
cs

 

SELECT 쿼리를 이용해 테이블이 생성된 것을 확인할 수 있지만, 이렇게 생성된 테이블은 데이터만 저장할 뿐 '권한' 설정까지 복제하지는 못 한다. 따라서 권한 설정을 하고 싶다면 테이블을 저장한 후 따로 줘야 한다.

(원본과 달리 PK 권한 설정이 되어 있지 않다.)

 

 

다음 수업시간 복습 부분 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- 1. Expression 복습하기
 
SELECT * FROM TABS
 
SELECT * FROM KOPO_PROMOTION_2
WHERE 1=1   -- WHERE 검색할 때 'AND TARGETWEEK > PLANWEEK' 자체를 복붙해서 사용하는데 이 때 편의성을 위해 '1=1'을 편의상 넣는것. 
AND TARGETWEEK > PLANWEEK
 
 
SELECT
    A.*,
    'Expression 연습 ' || A.REGIONID || A.ITEM AS PROPERCENT,
    A.MAP_PRICE + A.IR AS PROPERCENT2   -- 자료형을 맞춰줘야한다. 여기에는 'Expression 연습 ' || 을 붙이면 안 된다. 문자 || 숫자 가 되어버리기 때문.
FROM KOPO_PROMOTION_2 A
 
DESC KOPO_PROMOTION_2
 
UPDATE KOPO_PROMOTION_2
SET MAP_PRICE = 2000
WHERE MAP_PRICE = 0
cs

+ Recent posts