해당 테이블을 이용하여 설명
일반명령분과 다중행함수를 함께 쓰기
SELECT AGE,MAX(SCORE) FROM STUDENT WHERE AGE=22;
일반 명령문 AGE는 1 : 1 출력으로 결과값이 " 여러개 "
다중행함수 MAX() 는 N : 1 출력으로 결과값이 " 1개 "
그래서 위 코드를 실행하게 되면 아래의 오류가 발생하게 된다
위의 코드를 하나 하나 표현한다면 아래 처럼 표현한다
SELECT AGE FROM STUDENT WHERE AGE=22;
SELECT MAX(SCORE) FROM STUDENT WHERE AGE=22;
일반명령문과 다중행함수를 한번에 사용하기 위한 키워드가
GROUP BY [칼럼] 이다
SELECT AGE,MAX(SCORE) FROM STUDENT WHERE AGE=22 GROUP BY AGE;
GROUP BY 절을 이용하면 일반명령문 AGE라는 칼럼을
GROUPING 하여 다중행함수와 어울릴수 있도록 1개로 묶어준다
** 실행순서를 확실히 알아가며 해야한다!
위의 코드의 순서는
FROM STUDENT
WHERE AGE = 22
GROUP BY AGE
SELECT AGE, SUM(SCORE)
1. 테이블을 선택
2. 조건절로 = 22 선택
3. 22값을 가진 AGE를 모두 그룹핑 (GROUPING)
4. 요청한 칼럼값을 화면의 출력
조건식에 다중행 함수를 사용해보자
SELECT AGE,SUM(SCORE) FROM STUDENT WHERE SUM(SCORE)>=90 GROUP BY AGE;
WHERE의 조건에 다중행함수 SUM()을 사용해 보았다
해당 오류가 발생하는데,
WHERE에는 다중행함수를 사용할 수 없기 때문입니다
다중행함수를 이용하기위한 조건절이 따로 있는데
HAVING
SELECT AGE,SUM(SCORE) FROM STUDENT WHERE AGE !=24
GROUP BY AGE HAVING SUM(SCORE)>=40 ORDER BY SUM(SCORE) DESC;
(해당 코드는 한줄이다) 수행순서 먼저 보도록 하겠다
FROM STUDENT
WHERE AGE != 24
GROUP BY AGE
HAVING SUM(SCORE) >= 40
SELECT AGE,SUM(SCORE)
ORDER BY SUM(SCORE) DESC;
1. 테이블을 선택
2. 조건절 != 24 는 제외
3. AGE를 그룹핑
4. HAVING 조건 그룹핑한 AGE의 SCORE를 SUM(합쳤을때)
>= 40이 넘는 것만 해당
5. 2번 / 4번의 조건을 해당하는 AGE,SUM(SCORE) 출력
6. 5번의 출력을 SUM(SCORE) 기준 DESC(내림차순)으로 정렬
의 순서로 이루어 진다
'오라클(Oracle)' 카테고리의 다른 글
(6) 자바에서 SQL을 이용해 CRUD 표현하기 (0) | 2022.07.04 |
---|---|
(5) 오라클과 자바를 연동하는 법 (0) | 2022.07.04 |
(4) SQL 기초 (조인 JOIN) (0) | 2022.07.04 |
(3) SQL기초 (페이징처리) (0) | 2022.07.04 |
(1) SQL 기초 (0) | 2022.07.04 |