코딩테스트 준비 : SQL

hyeon·2022년 3월 9일
0

알고리즘 시작

목록 보기
18/18

WHERE
GROUP BY
HAVING
ORDER BY
순서 지켜야함
처리순서는 HAVING ORDERBY 사이에 SELECT

1. SELECT

SELECT DISTINCT 이름 FROM 이름
-> 중복없이 출력

SELECT IFNULL(이름,대체값)
-> 만약 이름이 NULL값이면 대체값을 출력

SELECT IF(10>5,'크다','작다')
-> WHERE에서도 사용가능 

CASE WHEN 조건 THEN 리턴값
ELSE 리턴값
END
->WHRER ORDERBY 에서도 사용가능 ELSE안쓰면 NULL나옴

SELECT 이름 FROM 이름 LIMIT 10 
->앞에서 부터 10개만
SELECT 이름 FROM 이름 LIMIT 10,10
->11부터 10개


<집계함수> 
=> SELECT이랑 HAVING에서만 쓸 수 있음
COUNT : 행의 갯수 (DISTINCT 쓸때는 COUNT(DISTINCT 이름)으로
SUM  
AVG : 평균
-> NULL을 0으로 평균내고 싶을때
SELECT AVG(CASE WHEN quantity IS NULL THEN 0) AS avg FROM sample 

MIN : 행중에서 제일 최솟값 
MAX

2. WHERE

WHERE 이름 BETWEEN A AND B
->A와B사이

WHERE 이름 IN('A','B')
->A와B에 해당하는 것만

WHERE 이름 LIKE '(와일드카드)문자열'
-> % : 하나이상의 문자 , _ :한개의 문자

WHERE height >= ANY (select height from usertb1 where name = '장원익' or name = '김호중');
-> 서브쿼리의 반환중 하나라도 해당하면 (OR)
ALL -> 모두 해당해야함

3. GROUP BY

DISTINCT했을때랑 같음 

4. HAVING

집계한 결과(집계함수사용한것)에서 조건에 맞는 값만 따로 걸러내고 싶을 때
내부 처리순서가
FROM
WHERE
GROUPBY
HAVING
SELECT
ORDER BY
로 WHERE이 맨앞이기때문에 WHERE에는 집계함수를 사용할 수 없고 HAVING을 사용해서 조건식을 지정해준다

5. UNION

SELECT A
FROM B
**UNION**
SELECT C
FROM D
->테이블 합치기

6. JOIN

<INNER JOIN>
SELECT 이름
FROM 테이블1
	INNER JOIN 테이블 2
    ON 조건
-> 조건에 맞는 것들만 출력
교집합
    
<OUTER JOIN>
1. LEFT OUTER JOIN
2. RIGHT OUTER JOIN
3. FULL OUTER JOIN

✔ YEAR, HOUR, MONTH, DAY... : 날짜와 관련된 필드에서 원하는 데이터의 일부를 추출

SELECT HOUR(DATETIME) ...
DATETIME과 날짜와 시간을 모두 포함하는 필드에서 원하는 데이터(년도, 시간, 달, 일, 분, 초 등)을 추출
위 예시에서는 시간 정보만을 추출하고 있다.

✔ SET: 변수 생성, 사용

SET @TIME := 1;
TIME이라는 변수를 사용하며 초기값을 1로 설정
SELECT @TIME := @TIME + 1 ...
TIME 변수에 누적하여 1씩 더하여 결과를 출력
... WHERE HOUR(DATETIME) = @TIME ...
DATETIME의 HOUR값이 TIME변수와 같은 값인지 조건 확인

중요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
**
✔ DATE_FORMAT: 날짜, 시간을 지정한 형식으로 출력

SELECT DATE_FORMAT(DATETIME, '%Y-%m-%d') ...
DATETIME을 '2021-SEPTEMBER-1th' 형식으로 출력
%Y %y(년도), %D %d(날짜), %M %m(월), %S(초), %T(hh:mm:ss형태). 대문자,소문자 별로 출력 형식 다름 주의**

%Y(4자리 연도), %y(2자리 연도), %m(월), %d(일), %H(24시간), %h(12시간)

출처: https://murra.tistory.com/157 [Murra Blog]

✔ ABS(): 절대값

SELECT ABS(-100) ...
숫자의 절대값을 구함

✔ CEIL(), FLOOR(), ROUND(): 올림/버림/반올림

SELECT CEIL(10, 1) ... #소수점 첫째자리에서 올림
SELECT FLOOR(10, 1) ... #소수점 첫째자리에서 버림
SELECT ROUND(10, 1) ... #소수점 첫째자리에서 반올림
첫 번째 숫자를 두 번째 숫자가 가리키는 자릿수를 기준으로 올림/버림/반올림

✔ POW(): 제곱

SELECT POW(10, 2) ...
첫 번째 숫자를 두 번째 숫자만큼 제곱
출처

다시풀기
: 어린동물찾기
여러기준으로 정렬하기
고양이와 개는 몇ㅁㅏ리 있을까
입양시간구하기(1)(2)
이름이 없는 동물의 아이디

STRING DATE<
루시와 엘라 찾기( 시간없음 패스)
중성화 여부 파악하기
오랜기간 보호한 동물(2)

profile
남기고 싶은 개발자입니다 :>

0개의 댓글