본문 바로가기
Back-End/Database

SQL 예제(1)

by newny 2023. 2. 27.
반응형

[sungjuk 테이블]

1. group by having

[문제설명]

평균(aver)이 70점 이상인 행을 대상으로 주소별 인원수를 구한 후, 그 인원수가 2명 이하인 행을 인원수 순으로 조회하시오

[풀이]

select addr, count(*)
from sungjuk
where aver >= 70
group by addr
having count(*)<=2
order by count(*);

2. case when

[문제설명]

학점 기준이 다음과 같을 때, 이름, 국어, 국어학점을 국어학점 기준으로 오름차순 조회하시오

→ 학점 기준 : 국어점수 90이상 'A학점', 80이상 'B학점', 70이상 'C학점', 60이상 'D학점', 나머지 'F학점'

[풀이]

select uname, kor,
case when kor>=90 then 'A학점'
     when kor>=80 then 'B학점'
     when kor>=70 then 'C학점'
     when kor>=60 then 'D학점'
     else 'F학점'
     end as kor_grade
from sungjuk
order by kor_grade;

3. 서브쿼리

[문제설명]

서울지역 학생들의 평균 국어점수 이상의 점수를 받은 서울 이외의 지역 학생의 지역, 이름, 국어점수를 조회하시오

[풀이]

select addr, uname, kor
from sungjuk
where kor>=(select avg(kor) from sungjuk where addr='Seoul') 
and addr<>'Seoul';

4. nvl()

[문제설명]

문제) sungjuk테이블에 아래 데이터를 행추가 하시오

sno : max(sno)+1 (단, max()값이 null이면 0으로 바꾼후 계산한다)

uname : 손흥민

kor : 100

eng : 100

mat : 100

addr : Seoul

wdate : sysdate

[풀이]

insert into sungjuk(sno, uname, kor, eng, mat, addr, wdate)
values((select nvl(max(sno), 0)+1 from sungjuk), '손흥민', 100, 100, 100, 'Seoul', sysdate);
반응형

'Back-End > Database' 카테고리의 다른 글

SQL 예제(2)  (0) 2023.02.28
Oracle SQL(3)  (0) 2023.02.27
Oracle SQL(2)  (0) 2023.02.23

댓글