✅ 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://school.programmers.co.kr/learn/courses/30/lessons/131530?language=mysql
SELECT truncate(price, -4) pr, count(*) from product group by pr order by pr
✅ where like "조건" : 조건을 부분적으로 일치하는 컬럼을 찾을 때 사용
https://coding-factory.tistory.com/114
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
✅ 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