MySQL 필수 28개 클래식 쿼리
7507 단어 MySQL
표 구조 및 테스트 데이터
Student(Sno, Sname, Ssex) 학생표
Teacher(Tno, Tname) 교사 목록
Course(Cno, Cname, Tno) 선택 과목 목록
SC(Sno, Cno, score) 성적표
질문:
1. 커리큘럼 번호'001'커리큘럼이'002'커리큘럼보다 성적이 높은 모든 학생의 학번을 조회한다.
select a.sno from (select sno,score from SC where Cno='001') a,(select sno,score from SC where Cno='002') b
where a.score>b.score and a.sno=b.sno;
2.'엽평'선생님의 수업을 배우지 않은 친구의 학번, 이름 조회
select sno,sname from student where sno not in
(select distinct sc.sno from sc,course,teacher where sc.cno=course.cno and course.tno=teacher.tno and teacher.tname=' ')
또는
4
select sno,sname from student where not exists
(select sc.* from sc,course,teacher where sc.cno=course.cno and course.tno=teacher.tno and teacher.tname=' '
and sc.sno=student.sno)
(주: 데이터량이 많을 때 not exists가 not in보다 효율이 조금 높음)3.'엽평'선생님이 가르치는 과정을 선택한 학생 중 성적이 가장 높은 학생의 이름과 성적을 조회한다(성적 병렬상황을 고려하지 않는다)
select s.sname,max(sc.score) from student s,sc,course c,teacher t where s.sno=sc.sno and c.cno=sc.cno and c.tno=t.tno
and t.tname=' '
4.'엽평'선생님이 가르치는 과정을 선택한 학생 중 성적이 가장 높은 학생의 이름과 성적을 조회한다(모두 열거된 경우)
select s.sname,sc.score from student s,sc,course c,teacher t where s.sno=sc.sno and c.cno=sc.cno and c.tno=t.tno
and t.tname=' ' and sc.score=
(select max(sc1.score) from sc sc1,course c1,teacher t1 where c1.cno=sc1.cno and c1.tno=t1.tno and t1.tname=' ')
5. 모든 학생의 학번, 성명, 수강신청 수, 총성적 조회
select s.sno,s.sname,count(sc.cno),sum(sc.score) from student s left join sc on s.sno=sc.sno group by s.sno
6.'엽평'선생님이 가르친 모든 과목의 학번, 이름 조회
select student.sno,student.sname from student where student.sno in
(select sc.sno from sc,course,teacher where sc.cno=course.cno and course.tno=teacher.tno and teacher.tname=' '
group by sc.sno having count(sc.cno)=
(select count(course.cno) from course,teacher where course.tno=teacher.tno and tname=' '))
7. 번호'001'도 배웠고 번호'002'도 배운 학생의 학번, 성명 조회
4
select sno,sname from student where sno in
(select sc1.sno from sc sc1,sc sc2 where sc1.sno=sc2.sno and sc1.cno='001' and sc2.cno='002')
8、과정번호'002'과정의 성적이'001'과정보다 낮은 모든 학우의 학번, 성명(상기 제1조보다 이름이 많다) 조회select s.sno,s.sname from
student s,(select sno,score from sc where cno='001') a,(select sno,score from sc where cno='002') b
where a.score>b.score and a.sno=b.sno and s.sno=a.sno
9. 모든 과정 성적이 60점 이하인 학생의 학번, 성명을 조회
select distinct s.sno,s.sname from student s,sc where s.sno=sc.sno and sc.sno not in
(select ss.sno from student ss, SC where ss.sno=sc.sno and sc.score>=60)
(주의: 선택과목이 없는 사람은 열거해서는 안 된다)
10. 모든 과목을 배우지 않은 학생의 학번, 성명 조회
select s.sno,s.sname from student s left join sc
on s.sno=sc.sno group by s.sno having count(sc.cno)
(주의: 여기는 선택과목이 없는 사람을 포함해야 한다),
11. 최소한 한 과목과 학번이'1007'인 학우가 배운 것과 같은 학우의 학번과 성명을 조회한다
4
select distinct s.sno,s.sname from student s,sc where s.sno=sc.sno and s.sno!='1007' and sc.cno in
(select cno from sc where sno='1007')
12. 조회와 학번'1002'의 학우들이 공부하는 과정이 똑같은 다른 학우들의 학번과 성명select s.sno,s.sname from student s,sc where s.sno=sc.sno and s.sno!='1002' and sc.cno in
(select cno from sc where sno='1002') group by s.sno having count(sc.cno)=(select count(cno) from sc where sno='1002')
13. 평균 성적에 따라 모든 학생의'고등수학','대학영어','데이터베이스'세 과목의 성적을 다음과 같은 형식으로 나타낸다. 학생 ID, 고등수학, 대학영어, 데이터베이스, 유효과정수, 유효평균점
4
select s.sno as ' ID',
(select score from sc sc1 where sc.sno=sc1.sno and sc1.cno='001')as ' ',
(select score from sc sc2 where sc.sno=sc2.sno and sc2.cno='003')as ' ',
(select score from sc sc3 where sc.sno=sc3.sno and sc3.cno='004')as ' ',
count(cno)as ' ',avg(sc.score)as ' '
from student s left join (select * from sc where cno in(001,003,004)) sc on s.sno=sc.sno
group by s.sno order by avg(sc.score) desc
14. 교과 과정을 선택한 학생 수select count(*) from (select distinct sno from sc) ct
15. 동명 동성 학생 명단을 조회하고 동명 인원을 통계한다.
4
select sname,count(sname) from student group by Sname having count(sname)>1
16. 각 과목의 평균 성적과 선발된 인원수를 조회한 결과 평균 성적의 하락 순서에 따라 배열하고 평균 성적을 동시에 과목 번호에 따라 승진 순서에 따라 배열한다.4
select cno,avg(score),count(sno) from SC group by cno order by avg(score) desc,cno asc
17. 평균 성적이 85 이상인 모든 학생의 학번, 성명, 평균 성적 조회4
select s.sno,s.sname,avg(sc.score) from student s,sc where s.sno=sc.sno group by s.sno having avg(sc.score)>85
18. 조회 과정 이름이'데이터베이스'이고 점수가 60보다 낮은 학생 이름과 점수4
select s.sno,s.sname from student s,sc,course c where s.sno=sc.sno and c.cno=sc.cno and c.cname=' ' and sc.score<60
19 모든 과목의 성적이 70점 이상인 성명, 과목 명칭과 점수를 조회select s.sname,c.cname,sc.score from student s,sc,course c where s.sno=sc.sno and c.cno=sc.cno and sc.score>70
20. 성이 "이"인 선생님의 개수를 조회한다
select count(tno) from teacher where tname like ' %'
21. 평균 성적이 60점 이상인 학생의 학번과 평균 성적을 조회한다
select sno,avg(score) from sc group by sno having avg(score)>60
22. 최소 두 과목을 선택한 학생의 학번, 이름, 선택 과목 수를 조회한다
select s.sno,s.sname,count(sc.cno) from student s,sc where s.sno=sc.sno group by sc.sno having count(sc.cno)>=2
23. 모든 학생이 선택한 과목의 교과 과정 번호와 교과 과정 이름을 조회한다.
4
select c.cno,c.cname,count(sc.cno) from course c,sc where c.cno=sc.cno
group by c.cno having count(sc.cno)=(select count(*) from student)
24, 두 과목 이상의 불합격 과정의 학번과 그 평균 성적 조회4
select sno,avg(score) from sc where score<60 group by sno having count(cno)>=2
25, 각 과목 성적 상위 3등이 기록한 학번, 과정 번호, 점수를 조회한다.(성적 병렬은 고려하지 않음)4
select sc.sno,sc.cno,sc.score from sc where
(select count(sc1.cno) from sc sc1 where sc1.cno=sc.cno and sc1.score>sc.score)<3
order by sc.cno,score desc
26, 각 과목의 성적을 통계 인쇄, 각 점수 단계의 인원수: 과정 ID, 과정 명칭, [100-85], [85-70], [70-60], [<60]4
select sc.cno as ' ID', c.cname as ' '
,sum(case when score between 85 and 100 then 1 else 0 end) as '[100 - 85]'
,sum(case when score between 70 and 85 then 1 else 0 end) as '[85 - 70]'
,sum(case when score between 60 and 70 then 1 else 0 end) as '[70 - 60]'
,sum(case when score < 60 then 1 else 0 end) as '[60 -]'
from sc,course c where sc.cno=c.cno group by sc.cno;
27. 각 과목의 성적이 가장 높고 가장 낮은 점수를 조회한다. 다음과 같은 형식으로 과정 ID, 최고 점수, 최저 점수를 표시한다.4
select cno as ' ID',max(score) as ' ',min(score) as ' ' from sc group by cno
28, 교과 과정 번호'002'의 성적 순위 3-6위(성적 병렬상황을 고려하지 않음)를 조회한 학생의 학번, 성명과 점수select s.sno,s.sname,sc.score from student s,sc where s.sno=sc.sno and sc.cno='002'
order by sc.score desc limit 2,4
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.