KoreaIt Academy/Oracle DBMS

[Oracle] SQL문의 활용, 함수(집계함수, 그룹함수 등..)

hongeeii 2021. 8. 9.
728x90
반응형


NULL 값을 다른 값으로 변경하는 함수

NVL(컬럼명, '값') : NULL 값 대신 다른 값으로 변경 후 검색합니다.

NVL2(컬럼명, 'NULL이 아닐 때 값', 'NULL일 때 값') : NULL일 때의 값, NULL이 아닐 때의 값을 각각 설정합니다.



조건식
컬럼명 IS NULL : 컬럼 값이 NULL이면 참
컬럼명 IS NOT NULL : 컬럼 값이 NULL이 아니면 참

LIKE :  포함된 문자열의 값을 찾습니다, 문자의 개수도 제한을 줄 수 있습니다.

--TEAM테이블에서 팀이름 중 '천마'로 끝나는 팀이름 찾기
SELECT * FROM TEAM
WHERE TEAM_NAME LIKE '%천%마%';

--PLAYER테이블에서 김씨 찾기
SELECT * FROM PLAYER
WHERE PLAYER_NAME LIKE '김%';

--PLAYER테이블에서 김씨 두 자 찾기
SELECT * FROM PLAYER
WHERE PLAYER_NAME LIKE '김_';

--PLAYER테이블에서 김씨와 이씨 찾기;
SELECT * FROM PLAYER
WHERE PLAYER_NAME LIKE '김%' OR PLAYER_NAME LIKE '이%';

--PLAYER테이블에서 이씨가 아닌 사람 찾기;
SELECT * FROM PLAYER
WHERE NOT PLAYER_NAME LIKE '이%';

--PLAYER테이블에서 세 자가 아닌 김씨 찾기;
SELECT * FROM PLAYER
WHERE NOT PLAYER_NAME LIKE '김__' AND PLAYER_NAME LIKE '김%';

 

CONCATENATION(연결) : ||

SELECT PLAYER_NAME || '의 영어 이름은 ' || E_PLAYER_NAME || '입니다.' AS 자기소개 FROM PLAYER;

 

 

숫자형 함수(DUAL)

-- 절대값

SELECT ABS(-10) FROM DUAL;

-----결과 : 10


-- 양의정수(1), 영(0), 음의정수(-1) 판단

SELECT SIGN(4), SIGN(0), SIGN(-4) FROM DUAL;

----- 결과 : 1, 0 , -1


-- 나머지

SELECT MOD(10, 3) FROM DUAL;
----- 결과 : 1

 

-- 값보다 큰 최근접 정수

SELECT CEIL(3.14), CEIL(-3.14) FROM DUAL;

-----결과 : 4, -3 

 

-- 값보다 작은 최근접 정수

SELECT FLOOR(3.14), FLOOR(-3.14) FROM DUAL;

-----결과 : 3, -4

 

-- 반올림

SELECT ROUND(3.5555555616) FROM DUAL;
SELECT ROUND(3.5555616, 2) FROM DUAL;
SELECT ROUND(3.354516, 1) FROM DUAL;

-----결과 : 4, 3.56, 3.4

 


-- 버림

SELECT TRUNC(3.9) FROM DUAL;

----결과 : 3

 

 

 집계 함수

-- 여러 개의 값을 하나의 값으로 집계하여 나타냅니다.
-- ※ NULL은 포함하지 않습니다.
-- ※ WHERE 절에서는 사용할 수 없습니다.

 

--평균 : AVG()
--최대값 : MAX()
--최소값 : MIN()
--총 합 : SUM()
--개수 : COUNT()

SELECT AVG(HEIGHT), MAX(HEIGHT), MIN(HEIGHT), SUM(HEIGHT), COUNT(HEIGHT) FROM PLAYER;

 

 

정렬 : ORDER BY

-- ASC : 오름차순 정렬, 생략이 가능합니다.
-- DESC : 내림차순 정렬

 

 

조건문 :  CASE

-- CASE WHEN THEN ELSE END 문법을 사용합니다.

 

-- EMP 테이블에서 SAL 3000이상이면 HIGH, 1000이상이면 MID, 다 아니면 LOW

 

 

 

 

GROUP BY : ~별(예 : 포지션 별 평균 키)

--문법 : GROUP BY 컬럼명 HAVING 조건식 

 

※  WHERE 절에서는 집계함수를 사용하지 못하여  HAVING절에서 처리를 하지만,
    WHERE절에서 처리를 할 수 있다면 WHERE절에서 먼저 처리를 해줍니다.

-- PLAYER 테이블에서 포지션 검색

SELECT "POSITION" FROM PLAYER
GROUP BY "POSITION"
HAVING "POSITION" IS NOT NULL;

SELECT "POSITION", AVG(HEIGHT), MIN(WEIGHT) FROM PLAYER
WHERE WEIGHT >= 80
GROUP BY "POSITION"
HAVING AVG(HEIGHT) >= 180;

 

 

 

SUB QUERY

--SELECT문에 SELECT를 한번 더 써서 사용하는 SQL문인데요, SELECT를 어디에 쓰는지에 따라 명칭이 달라집니다.

 

--FROM절 : IN LINE VIEW
--SELECT절 : SCALAR
--WHERE절 : SUB QUERY

 

 

 

 

 

728x90
반응형

추천 글