쌓고 쌓다

오라클 중심의 SQL 배움터 7장 연습문제 풀이 본문

프로그래밍/SQL

오라클 중심의 SQL 배움터 7장 연습문제 풀이

승민아 2022. 11. 2. 21:13

1번

학과별로 평균 몸무게와 학생 수를 출력(평균 몸무게를 내림차순으로 정렬)

2번

학생 수가 최대인 학년과 최소인 학년의 학생 수를 출력

3번

학과내에서 같은 학년에 재학중인 학생 수가 3명 이상인 학과 번호, 학년, 학생 수, 최대 키, 최대 몸무게 출력

 

4번

학과와 학년별 키 평균, 학과별 키 평균, 전체 학생에 대한 키 평균을 출력

***5번***

학과별 평균 몸무게와 학년별 평균 몸무게를 출력

6번

학과별 교수 수가 2명 이하인 학과 번호, 교수 수 출력

*7번

교수중에서 급여와 보직수당을 합친 금액이 가장 많은 경우와 가장 적은 경우 그리고 평균 금액을 출력

단, 보직수당이 NULL이면 0으로 계산, 급여는 소수점 둘째 자리에서 반올림

8번

학과와 직급별 급여 평균, 학과별 급여 평균, 직급별 급여 평균, 그리고 교수 전체에 대한 급여 평균을 출력

 

9번

직급별로 평균 급여가 300보다 크면 '우수', 작거나 같으면 '보통'을 출력

10번

학생 테이블에서 키의 범위에 따라 A, B, C, D 등급으로 나눈 후, 등급별 인원 수를 출력

(185 초과는 'A', 172~185는 'B', 163~171는 'C' 그외는 'D')

 

 

 

 

 

(1)

SELECT deptno, AVG(weight), COUNT(*)
FROM student
GROUP BY deptno
ORDER BY AVG(weight) DESC;

 

(2)

SELECT MAX(COUNT(*)) "MAX", MIN(COUNT(*)) "MIN"
FROM student
GROUP BY grade;

 

(3)

SELECT deptno, grade, COUNT(*), MAX(height), MAX(weight)
FROM student
GROUP BY deptno, grade
HAVING COUNT(*) >= 3 ORDER BY deptno;

 

(4)

SELECT deptno, grade, AVG(height)
FROM student
GROUP BY ROLLUP(deptno, grade) ORDER BY deptno;

 

(5)

SELECT deptno, grade, AVG(height)
FROM student
GROUP BY GROUPING SETS(deptno, grade) ORDER BY deptno;

 

(6)

SELECT deptno, COUNT(*)
FROM professor
GROUP BY deptno
HAVING COUNT(*)<=2 ORDER BY deptno;

 

(7)

SELECT ROUND(MAX(sal+NVL(comm,0)),1) "MAX", ROUND(MIN(sal+NVL(comm,0)),1) "MIN", ROUND(AVG(sal+comm),1) "AVG_SAL"
FROM professor
WHERE position LIKe '%교수';

 

(8)

SELECT deptno, position, AVG(sal)
FROM professor
GROUP BY CUBE(deptno, position);

 

(9)

SELECT position, AVG(sal), CASE WHEN AVG(sal) > 300 THEN '우수' ELSE '보통' END "구분"
FROM professor
GROUP BY position ORDER BY position;

 

(10)

SELECT CASE WHEN height > 185 THEN 'A'
            WHEN height BETWEEN 172 AND 185 THEN 'B'
            WHEN height BETWEEN 163 AND 171 THEN 'C'
            ELSE 'D'
            END "A"
, COUNT(*)
FROM student
GROUP BY CASE WHEN height > 185 THEN 'A'
            WHEN height BETWEEN 172 AND 185 THEN 'B'
            WHEN height BETWEEN 163 AND 171 THEN 'C'
            ELSE 'D'
            END
ORDER BY "A";

 

Comments