티스토리 뷰

프로그래머스 SQL 고득점 kit 2일차( SELECT level1-6문제, level1 끝!)

 

1. 진수 변환

(1) 2진수로 변환 : BIN

SELECT BIN(5)

# 101

(2) N진수를 M진수로 변환: CONV

SELECT CONV(5, 10, 2)

# 10진수인 52진수로 변환
# 101

 

2. 비트 연산

AND (&) OR (|) XOR(^) NOT(~)
각 비트 자리에서
둘다 1이면 1, 아니면 0
각 비트 자리에서
하나라도 1이면 1, 아니면 0
각 비트 자리에서
값이 다르면 1, 같으면 0
각 비트를 반전
1 → 0 , 0 → 1
101
100
-----
100
101
100
-----
101
101
100
-----
001
~ 101 → 1010 (-6) 보수계산
~ 100  → 1011 (-5) 보수계산
* 비트반전이므로 부호반전

- 비트 연산 포스팅: https://bravesol.tistory.com/133

 

3. 정규표현식

 - REGEXP '정규표현식'

 

SELECT 
    COUNT(*) AS COUNT
FROM 
    ecoli_data
WHERE 
    BIN(genotype) NOT REGEXP '1.$' # 1X로 끝나는 경우
    AND BIN(genotype) REGEXP '(1$)|(1..$)'; # 1로 끝나거나 1XX로 끝나는 경우

 

4. SUBSTRING

- 문자열 인덱싱, 숫자도 넣으면 문자열로 인식, 시작위치는 뒤에서 부터 세려면 -붙이면됨. 마지막꺼는 -1

SUBSTRING(문자열, 시작위치, 길이)

 

5. JOIN

- LEFT JOIN : 왼쪽 기준으로 채우고, 오른쪽에 매칭되는 값이 없으면 NULL로 채운다.

- SQL표준에서 NULL값은 가장 작은 값으로 간주되므로 가장 앞에 배치된다.

- NULL을 뒤로 보내고 싶다면 IS NULL → NULL이면 1 아니면 0이므로 오름차순시 NULL이 뒤로 간다

ORDER BY B.CREATED_DATE IS NULL

- 매칭이 되는 것만 조회하고 싶다면 LEFT JOIN 대신 INNER JOIN사용

SELECT A.FLAVOR
FROM FIRST_HALF AS A 
LEFT JOIN ICECREAM_INFO AS B
ON A.FLAVOR = B.FLAVOR
WHERE (A.TOTAL_ORDER > 3000) AND (B.INGREDIENT_TYPE = "fruit_based")
ORDER BY A.TOTAL_ORDER DESC

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함