[SQL] 코딩테스트 필수 문법 - 헷깔리는 것, 알아야 하는 것

mango·2023년 10월 14일

SQL

목록 보기
6/13

코딩테스트 준비하다가 SQL 오라클 문법 중 너무 간단한건데 자꾸 헷깔리는게 있어 정리해보겠다.

우선, 들어가기 전에
나는 SQL은 문제를 꼼꼼하게 보지 않는 습관 때문에 오답률이 높다.

<12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회>
라고 했을 때, 12세 이하만 보고 '여자'를 못본다던가 그런 식

문제 꼼꼼하게 정확하게 읽기!!!!!!!!!!


💎 문자열

Oracle에서 문자열 타입은 VARCHAR() 으로 나타내며, '' 작은 따옴표로 표기한다.

💎 AS

별칭
1. 한글은 as "" 큰따옴표
2. 영어는 그냥 as 영어
영어도 "" 큰따옴표 사용 ok



💎 LIKE

address LIKE '%경기도%'
LIKE 뒤에 문자열에는 '' 작은따옴표!



💎 GROUP BY

오라클에서는 mySQL과 달리 group by 뒤에 별칭을 사용하지 못한다.

SELECT substr(PRODUCT_CODE, 0, 2) as category
, count(product_id) as PRODUCTS
from PRODUCT
group by substr(PRODUCT_CODE, 0, 2) 
order by 1

이렇게 전체를 쓰던지, 정 group by 뒤에 컬럼명을 쓰고 싶다면

SELECT category, count(product_id) as PRODUCTS
from (
SELECT substr(PRODUCT_CODE, 0, 2) as category
, product_id
from PRODUCT
)
group by category
order by 1

이렇게 컬럼이 그대로 return 되어야지만 컬럼으로 group by 가능


💎 날짜

날짜는 그냥 아무생각 말고
to_char(date, 'YYYYMMDD')로 문자열로 바꾸어서 사용하기!!!!!!!!!!!!!!


💎 기간

기간은 date 기준
end_date - start_date +1 해주면 기간이 출력된다.



💎 SUBSTR()

SUBSTR(str, 시작위치, 길이)
★ 주의할 점
1. 오라클에서는 문자열이 1부터 시작한다..... 진짜 욕나옴 $^%ㅅ!#%ㅋㅍ
2. 3번째 파라미터가 !!!길이!!! 이다

substr(address, 시작위치)		
// 4부터 끝까지

substr(address, 시작위치, 길이)
// ★★★★★★★★주의해야 하는 부분이다★★★★★★★ 
// JAVA는 시작위치, 종료위치 인데 오라클은 시작위치, 길이....... 
// 너무너무 헷깔림



💎 내림, 반올림, 올림

JAVA와 동일하게

Floor(score) : 내림 
Floor(score, 2) : 소숫점 2자리 까지!(= 3번째 자리에서 내림) 

Round(score) : 반올림 
Round(score, 2) : 소숫점 2자리 까지!(= 3번째 자리에서 반올림)

Ceil() : 올림

Trunc() : 소숫점 절사(버림)
※ TRUNC(NMB,-1)는 주로 금액 계산 시 1원 단위를 절사 할 때 사용 한다. 



💎 컬럼 이어붙이기

컬럼 이어붙이기

concat(id, name) 		// 아이디+이름 잇기
id || name || '입니다.' 	// ||도 이어붙이기 가능



💎 CASE WHEN

안쓰니까 자꾸 까먹네..

answer like case when 조건 then '가%'
				when 다른조건 then '나%'
                else '다%' end "fee"

※ 주의할 점

7 이상 7프로
10 이상 10프로
이런 조건이 있을 때,

answer like case when a >= 7 then '7%'
				when a >= 10 then '10%'
                else '다%' end "fee"

이렇게 구현하면, 11은 10프로로 갈 것 같지만 첫번째 when 절에서 걸려서 7%가 되어버림
주의하기!!

★ 그리고 case when 절에서는 as 대신에 그냥 "" 큰따옴표로 별칭을 붙인다.



💎 숫자로 변환

날짜를 문자열로 변환하면 월을 출력할 때, 01,04 이런식으로 출력하는데 이것을 1,4로 바꾸는 방법

to_number(to_char(date, 'MM')) 
profile
The joy of knowing things

0개의 댓글