발등에 불 붙은 MySql 정리
1. 비트 연산
& | AND 연산. 둘 다 참이면 만족 |
| | OR 연산. 둘 중 하나만 참이여도 만족 |
^ | XOR 연산. 둘 중 하나만 참이면 만족 |
~ | 보수 연산. ~(1100) -> 0011 |
<< | 왼쪽 시프트 연산자 2<<2 = 8 |
>> | 오른쪽 시프트 연산자 4>>2 = 1 |
2. 순위 구하기
rank() over (order by 정렬할 기준): 기준 값이 같으면 같은 순위를 가짐. 그리고 다음 순위는 건너뜀.
dense_rank() over (order by 정렬할 기준): 기준 값이 같으면 같은 순위를 가짐. 다음 순위는 이어감.
row_number() over (order by 정렬할 기준): 기준 값이 같아서 순서에 따라 다른 순위를 가짐. 1,2,3,4...
3. CASE 문
CASE
WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
ELSE 값3
END
https://school.programmers.co.kr/learn/courses/30/lessons/301649?language=mysql
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SELECT ID,
CASE WHEN rank_size <= total_count*0.25 THEN 'CRITICAL'
WHEN rank_size <= total_count*0.50 THEN 'HIGH'
WHEN rank_size <= total_count*0.75 THEN 'MEDIUM'
ELSE 'LOW'
END AS COLONY_NAME
FROM (
SELECT ID,
RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) AS rank_size,
(SELECT COUNT(*) FROM ECOLI_DATA) AS total_count
FROM ECOLI_DATA
) AS ECOLI_DATA
ORDER BY ID ASC;
4. QUARTER(date) 분기 함수
SELECT QUARTER("2017-06-15") -> 2
QUARTER() 함수는 주어진 날짜 값(1에서 4 사이의 숫자)에 대한 분기를 반환합니다.
- 1월-3월은 1을 반환합니다.
- 4-6월은 2를 반환합니다.
- 7-9월은 3을 반환합니다.
- 10월-12월은 4를 반환합니다.
5. CONCAT 함수
글자를 합쳐줌
CONCAT("I'm","a","potato") -> I'm a potato
6. ORDER BY 1
첫번째 칼럼 기준으로 오름차순 정렬
ORDER BY 2 는 두번째 칼럼 기준으로 오름차순 정렬
7. ROUND() , TRUNCATE()
ROUND(숫자,반올림할 자릿수 디폴트 0): ROUND(3456.1234567) -> 3456
TRUNCATE(숫자,버릴 자릿수): 반드시 버릴 자릿수를 명시해야 함
8. IFNULL, COALESCE
해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수
IFNULL(Column명, "Null일 경우 대체 값")
COALESCE는 지정한 표현식들 중에 NULL이 아닌 첫 번째 값을 반환
- 기본 구조
// NULL 처리 상황
SELECT COALESCE(Column명1, Column명1이 NULL인 경우 대체할 값)
FROM 테이블명
// 배타적 OR 관계 열
// Column1 ~ 4 중 NULL이 아닌 첫 번째 Column을 출력
SELECT COALESCE(Column명1, Column명2, Column명3, Column명4)
FROM 테이블명
- Example
// NAME Column의 값이 NULL인 경우 다음 표현식으로 넘어간다.
// 다음 표현식인 "No name"이 Null이 아니므로 "No name"을 출력.
SELECT COALESCE(NAME, "No name")
FROM ANIMAL_INS
9. 중복 제거 DISTINCT
SELECT DISTINCT Column명 FROM TABLE명
ORDER BY도 가능하지만 성능은 distinct가 더 좋음
참고: https://devjhs.tistory.com/87,
https://velog.io/@gillog/DB-MySQL-NULL-%EC%B2%98%EB%A6%ACIFNULL-CASE-COALESCE,