SQL

w ho
4 min readOct 18, 2020

--

  • 필요한 SQL 문 정리
  • join
  1. 쿼리에서 해당 속성값만 조건을 걸때
    1) 서브쿼리 이용
SELECTSD.DLVPRTN_CD AS DLVPRTN_CD ,-- MAX(SD.DLVPRTN_CD)   AS CUSTOMER,(SELECT COUNT(*) FROM PS_ERR_PROC_INFO_X10034 WHERE COMPANY_CD = #{company_cd} AND SER_NO BETWEEN #{ser_no_from} AND #{ser_no_to} ) AS IRRATIONAL, --불합리 조치  // company_cd / ser_no 변수 where 걸기~~~~~~~~~~ ... 

2)join 걸어서 사용

SELECTSD.DLVPRTN_CD AS DLVPRTN_CD ,-- MAX(SD.DLVPRTN_CD)   AS CUSTOMER,LINE_CDDTL.SYSDEF_NM    AS LINE,-- 라인4~~~~~....LEFT OUTER JOIN MA_CODEDTL LINE_CDDTL 
ON WBS.COMPANY_CD = LINE_CDDTL.COMPANY_CD AND PROJ.LINE_CD = LINE_CDDTL.SYSDEF_CDAND LINE_CDDTL.MODULE_CD = 'PS' AND LINE_CDDTL.FIELD_CD = 'Z016_10034'

inner / outer 조인

inner는 교집함 / outer는 다 포함
inner로 join한 테이블은 전부 기준 테이블이 된다.
on 을 통해서 묶을때 두테이블 값의 key값 공통인것들 다 묶어야 한다.

2. GROUP BY

< GROUP BY >
- 그룹바이 한 컬럼은 모두 SELECT 속성값에 들어가야 한다.
MAX ,MIN을 이용

< CASE WHEN THEN >

SELECT *,    
CASE WHEN SCORE>= '90' THEN 'A학점'
WHEN (SCORE>= '80' AND SCORE < '90') THEN 'B학점'
WHEN (SCORE>= '70' AND SCORE < '80') THEN 'C학점'
WHEN (SCORE>= '60' AND SCORE < '70') THEN 'D학점'
ELSE 'F학점'
END AS 학점 FROM MY_TABLE
// 조건에 따라 해당 컬럼 값 지정

3. NULL 값 처리

< NVL >
NVL 함수는 값이 null인 경우 지정값을 출력한다.
함수 : NVL(“값”, “지정값”)
링크 참고 :
https://gent.tistory.com/189

NVL((지정 변수), 0) AS INSTALL,지정변수가 0이면 0으로 값을 넣는다. 

< DECODE >
SQL 표준함수가 아니고 오라클에서만 사용 가능해서 자주 쓰진 않는다.

SELECT gender      , DECODE(gender, 'M', '남자', 'F', '여자', '기타') gender2   FROM temp//gender가 M이면 남자 F면 여자 아니면 기타로 값을 넣는다. 

<round>
기본적으로 반올리 / 소수점 자리수 지정
링크 참고 : https://gent.tistory.com/241

4. ROLLUP

참고 URL : https://androphil.tistory.com/166
-ROLLUP은 일반적인 누적에 대한 총계를 구할 때 아주 편리하게 사용 할 수 있다
-GROUPING 함수는 해당 Row가 GROUP BY에 의해서 산출된 Row인 경우에는 0을 반환하고, ROLLUP이나 CUBE에 의해서 산출된 Row인 경우에는 1을 반환하게 된다
-GROUPING_ID(컬럼1,컬럼2) : grouping_id(컬럼1, 컬럼2) 의 식별자 값들은 0, 1, 3 이렇게 3개의 값으로 나타나게 됩니다.

SELECT DLVPRTN_CD,SITE_CD,SHRTCOM_CUS_CD   
FROM
....
GROUP BY ROLLUP ((DLVPRTN_CD, SITE_CD),SHRTCOM_CUS_CD)

[ROLLUP집계 순서]
--1.(DLVPRTN_CD, SITE_CD)에 대한 집계합수 실행
--2.(DLVPRTN_CD, SITE_CD),SHRTCOM_CUS_CD 에 대한 집계함수 실행

파티션 바이

SELECT 순위함수() OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명) FROM 테이블명 SELECT 집계함수(컬럼명) OVER (PARTITION BY 컬럼명) FROM 테이블명

출처: https://ggmouse.tistory.com/119 [초보개발자꽁쥐]

--

--

No responses yet