INSERT INTO students (first_name) VALUES
('Caleb'), ('Samantha'), ('Raj'), ('Carlos'), ('Lisa');
INSERT INTO papers (student_id, title, grade ) VALUES
(1, 'My First Book Report', 60),
(1, 'My Second Book Report', 75),
(2, 'Russian Lit Through The Ages', 94),
(2, 'De Montaigne and The Art of The Essay', 98),
(4, 'Borges and Magical Realism', 89);
먼저 데이터를 입력해줍니다.
students테이블은 id(int), first_name(varchar(45)) 이고
papers테이블은 id(int), title(varchar(100)), grade(int), student_id(int)
foreign keys로 students의 id와 papers의 student_id를 연결했습니다.
먼저 case 입니다.
case는 case가 나온 뒤 when, then, else, end가 따라옵니다.
시험봐서 80점 이상인 학생은 PASSING
시험을 안보거나 80점보다 점수가 낮은 학생은 FAILING 을 주려고 합니다.
select s.first_name,ifnull(avg(p.grade),0) as average,
case
when avg(p.grade) >= 80 then 'PASSING' -- papers의 grade가 80과 같거나 크다면 PASSING
else 'FAILING' -- 아니라면 FAILING
end as passing_status -- case문 종료 그리고 컬럼이름은 passing_status로 하겠다
from students s -- students = s
left join papers p -- papers = p
on s.id = p.student_id
group by s.id
order by average desc;
이렇게 case, when, then, else, end를 통해 조건문을 이용했습니다.
if문은 조금더 간결합니다.
select s.first_name,ifnull(avg(p.grade),0) as average,
if (avg(p.grade) >= 80, 'PASSING','FAILING') as passing_status
-- 만약 papers의 grade가 80과 같거나 크다면 PASSING 아니면 FAILING 컬럼명은 passing_status
from students s
left join papers p
on s.id = p.student_id
group by s.id
order by average desc;
if문을 이용해도 같은 결과가 나옵니다.
'MySQL' 카테고리의 다른 글
MySQL WorkBench 에 AWS DB 설정하기 (0) | 2022.02.04 |
---|---|
MySQL의 테이블 합치기 inner join, outer join(right, left)와 ifnull 이용해 null값 변경 (0) | 2021.12.16 |
MySQL의 foreign keys 설정하기 (0) | 2021.12.13 |
MySQL의 테이블 코딩 작성하기 create table (0) | 2021.12.10 |
MySQL의 date_format, 시간차이 datediff, 날짜 더하기date_add 사용하기 (0) | 2021.12.09 |