🖥️ CS, 개발상식/데이터베이스

[MySQL] SQL 코딩테스트 준비(feat. 프로그래머스 SQL 고득점 Kit)

dev_zoe 2023. 4. 28. 00:36
반응형

max(컬럼), min(컬럼) : 지정한 컬럼의 값 중 최대값/최소값 출력

https://school.programmers.co.kr/learn/courses/30/lessons/131697

SELECT MAX(PRICE) FROM product;

- 정수 뿐만 아니라 문자열도 비교하여 문자열 기준 최대값, 최소값을 구할 수 있음

https://school.programmers.co.kr/learn/courses/30/lessons/59415

SELECT max(datetime) from animal_ins

 

집계함수

count(*) : 조건을 만족하는 모든 행의 갯수 반환 (null 포함)

https://school.programmers.co.kr/learn/courses/30/lessons/59406

SELECT count(*) from animal_ins

avg(컬럼): 평균

sum(컬럼): 총합

--> 만약 특정 컬럼 별 평균, 총합, 갯수를 구하고자 한다면 group by 컬럼을 통해 그룹핑해줘야함

 

 distinct 컬럼이름 : 해당 컬럼의 값 중에 중복이 아닌 고유한 값에 대해 연산하고 싶을 때 사용
count는 컬럼 이름을 기준으로 세면 null인 값의 데이터를 count할 때 세지 않음

https://school.programmers.co.kr/learn/courses/30/lessons/59408

SELECT count(distinct name) from animal_ins

 

 group by : 컬럼명으로 데이터를 그룹핑 해줌

order by 

  • 컬럼명의 데이터를 기준으로 데이터 정렬 (만약 a, b, c 이런식으로 콤마 구분으로 여러개라면 a기준으로 정렬 -> a값이 같으면 b 기준으로 정렬 -> b값이 같으면 c 기준으로 정렬 이런식으로 정렬함)
  • 만약 a 기준 내림차순, a가 같으면 b로 오름차순이면? --> order by a desc, b
  • 오름차순이 디폴트이고, 내림차순으로 정렬 시 ORDER BY 컬럼 DESC

https://school.programmers.co.kr/learn/courses/30/lessons/59040?language=mysql 

SELECT animal_type, count(*) from animal_ins group by animal_type order by animal_type

 

https://school.programmers.co.kr/learn/courses/30/lessons/132202

SELECT MCDP_CD 진료과코드, count(mcdp_cd) 5월예약건수
from appointment where month(apnt_ymd) = 5
group by mcdp_cd order by 5월예약건수, 진료과코드

 

 having : where절과 비슷하지만, 그룹핑한 결과에 조건을 적용하는 구문므로, group by와 항상 짝궁처럼 같이 다닌다.

https://school.programmers.co.kr/learn/courses/30/lessons/59041

SELECT name, count(name) from animal_ins group by name having count(name) > 1 order by name

 

 컬럼 '별칭' (컬럼 as '별칭' -> as 생략가능) : 컬럼을 별칭을 붙여 사용할 수 있음

https://school.programmers.co.kr/learn/courses/30/lessons/59412

SELECT hour(DATETIME) hour, count(DATETIME) from animal_outs #hour(시간)은 시간만 추출하는 구문
group by hour 
having hour>=9 and hour<=19 
order by hour

 

테이블 '별칭' : 테이블에 별칭을 붙여 사용할 수 있음

 

 truncate(컬럼, n) : 소수점 n+1 자리에서 버려서 n자리 까지 남긴 수 반환 / round(컬럼, n): 소수점 n+1 자리에서반올림해서 n자리까지 남긴 수 반환

* n이 음수라면, 정수의 -n 자리에서 반올림/ 버림 후 반환

https://hbase.tistory.com/193

 

[MySQL] 반올림과 버림 함수 - ROUND(), TRUNCATE()

숫자 데이터를 다룰 때 은근히 반올림과 버림을 많이 사용한다. MySQL에서는 반올림과 버림 기능을 제공하기 위해 ROUND() 함수와 TRUCATE() 함수를 제공한다. 반올림 (ROUND) MySQL의 쿼리에서 ROUND() 함수

hbase.tistory.com

 

https://school.programmers.co.kr/learn/courses/30/lessons/131530?language=mysql

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT truncate(price, -4) pr, count(*) from product group by pr order by pr

 

 where like "조건" : 조건을 부분적으로 일치하는 컬럼을 찾을 때 사용

https://coding-factory.tistory.com/114

 

[MSSQL] LIKE절 사용법 & 예제

LIKE구문 쿼리문 WHERE절에 주로 사용되며 부분적으로 일치하는 칼럼을 찾을때 사용됩니다. SELECT * FROM [테이블명] WHERE LIKE [조건] _ : 글자숫자를 정해줌(EX 컬럼명 LIKE '홍_동') % : 글자숫자를 정해주

coding-factory.tistory.com

https://school.programmers.co.kr/learn/courses/30/lessons/151137

SELECT car_type, count(car_type) from car_rental_company_car
where options like "%시트%" group by car_type order by car_type

 

✅ 조인

 

1) (Inner) join --> ON 절의 조건이 일치하는 결과만 가져옴

 

SELECT *  #해당되는 모든 컬럼을 가지고온다.
FROM 사원 # 사원테이블을 가져온다.
JOIN 직책  # 사원테이블과 직책 테이블을 join한다.
ON 사원.직책번호 = 직책.직책번호; #사원테이블과 직책 테이블은 직책번호로 연결된다.
(=

FROM 사원, 직책

WHERE 사원.직책번호 = 직책.직책번호)

 

2) Left join, Right join --> 왼쪽/오른쪽 테이블의 기준에 따라 해당 테이블의 레코드는 다 가져오고, 다른 테이블은 ON 절의 조건에 맞는 데이터를 가져옴. 이 때 다른 테이블의 데이터가 없다면 NULL값으로 채움

-- 예) 1학년 학생의 이름과 지도교수명을 출력하라. 단, 지도교수가 지정되지 않은 학생도 출력되게 하라.

SELECT STUDENT.NAME, PROFESSOR.NAME 
FROM STUDENT LEFT/RIGHT JOIN PROFESSOR -- STUDENT를 기준으로 왼쪽 조인
ON STUDENT.PID = PROFESSOR.ID 
WHERE GRADE = 1

 

 날짜

date_format : 날짜 포맷

https://school.programmers.co.kr/learn/courses/30/lessons/144854

SELECT BOOK_ID, AUTHOR_NAME, date_format(PUBLISHED_DATE, "%Y-%m-%d")
from book b
join author a
on b.author_id = a.author_id
where category = "경제"
order by published_date

 

year(date) / month(date) / day(date) : 각각 DATE에서 년 / 월 / 일만 뽑아서 출력

https://www.habonyphp.com/2019/02/year-month-date.html

 

MYSQL - YEAR, MONTH, DATE 함수

YEAR 함수 YEAR 함수는 범위 1000~9999까지에 대한 년을 반환합니다. #ex.1) mysql> SELECT YEAR('2011-10-09 07:18:59'); -> 2011 MONTH 함수 MONTH 함수...

www.habonyphp.com

 

NULL

컬럼 IS NULL : NULL인 컬럼 값만 가져오기

컬럼 IS NOT NULL : NULL이 아닌 컬럼 값만 가져오기

IFNULL(컬럼, 대체값): 만약 컬럼값중에 null인 값이 있다면 대체값으로 출력하기

 

✅ LIMIT n : 조건에 맞는 데이터를 n개까지 출력

 

✅ 포함여부

where 컬럼 in (조건) --> 만약 컬럼 값이 조건에 맞는 값이 하나라도 있다면 해당 컬럼 값 포함

 

✅ 조건문: case when

https://school.programmers.co.kr/learn/courses/30/lessons/59409

ex) ANIMAL_INS 테이블에서 중성화 되었다면 O, 아니면 X라고 표시하여 출력하시오.

SELECT ANIMAL_ID, NAME,
       CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%'
            THEN 'O'
            ELSE 'X'
       END
FROM ANIMAL_INS
ORDER BY ANIMAL_Id

 

 

반응형