새소식

카테고리 없음

발등에 불 붙은 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,

https://stormpy.tistory.com/82

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.