일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 추천 사이트
- JSON
- #{..}
- StringUtils.hasText
- 함수 인자값 id
- 명령어
- 자바스크립트 인라인
- it
- BindingResult
- 룸북
- Java
- linux
- 개발시작전 자세
- 하모니카 OS 5
- Intellij
- 순서 보장
- cmd
- 리눅스
- 추천 프로그램
- 프로젝트 클린
- 스프링부트
- 타임리프
- 타임리프와 스프링
- select
- 시퀀스 조회
- 설정
- Test 룸북 사용하기
- 비밀번호 변경 명령어
- js
- 다른사람 프로젝트 수정전 가져야할 자세
- Today
- Total
웹개발 블로그
[SQL] SELECT Order By, Group By 본문
실습
ㄴ RDBMS : ORACLE - DB : SCOTT
ORDER BY
- 조회 결과를 특정 attribute(s) 기준으로 정렬하여 가져오고 싶을 때 사용한다.
ㄴ 여러개 속성 사용 가능하다.
ㄴ 💥앞에 명시된 컬럼 순서대로 정의된다.(그룹지어서 정렬됌)
- default 정렬 방식은 오름차순이다
- 오름차순 정렬은 ASC로 표기한다
- 내림차순은 정렬은 DESC로 표기한다.
SELECT *FROM emp ORDER BY DEPTNO ASC, SAL DESC;
--1차적으로 부서번호, 2차적으로 그 부서번호 안에서 급여 내림차순
AGGREGATE FUNCTION (애그리게이트 펑션) <-- GROUP BY절과 연결돼요~!
- 여러 tuple(행)들의 정보를 요약해사 하나의 값으로 추출하는 함수
- 대표적으로 COUNT, SUMM MAX, MIN,AVG 함수가 있다.
- (주로) 관심있는 attribute에 사용된다. e.g.) AVG(sal), MAX(HIREDATE)
- NULL 값들은 제외하고 요약 값을 추출한다.
EX) 임직원 수를 알고 싶다
SELECT COUNT(*) FROM emp;
-> 튜플의 행이 출력된다.
SELECT COUNT(컬럼) FROM emp;
-> 컬럼명을 넣어주면 NULL을 제외하고 COUNT한다.
GROUP BY <- 결과들을 그룹지어 통계하기
- 키워드 : 각 ~~별
ㄴ 특정 ID만 조회하는게 아닌 각 ~별로 조회하고 싶다면
ㄴ EX) 각 프로젝트 별로 참여한 임원 수와, 최대 연봉, 평균연봉 구하기
EX) 각 부서별로 남녀의 수가 어떻게 되는지 구하기
HAVING
- GROUP BY와 함께 사용한다.
- AGGREGATE FUNCTION의 결과값을 바탕으로 그룹을 필터링하고 싶을 때 사용한다.
- HAVING절에 명시된 조건을 만족하는 그룹만 결과에 포함된다.
- (중요)그룹핑한 결과에 대한 조건을 주기
EX) 참여 인원이 7명 이상인 ~
ㄴ HAVING COUNT(*) >= 7
EX) 회사 평균연봉보다 적은 부서의 평균연봉 구하기
🔽 헷갈리는 예제
EX)
프로젝트 참여 인원이 7명 이상인 프로젝트에
한정해서 각 프로젝트별로
프로젝트에 참여한 90년대생들의 수와 이들의 평균연봉구하기.
만약 HAVING COUNT(*) >= 7 로 적었다면 땡!
==> HAVING절로 속기 쉽다.
그룹핑한 결과에 대한 값에 조건을 주기에 HAVING을 사용하면 안된다.
(해결)
🔽 WHERE절에서 해줘야한다.
WHERE ID IN (SELECT ID FROM 테이블명 GROUP BY ID HAVING COUNT(*) >= 7)
ㄴ 서브쿼리 설명 : 참여 인원이 7명 이상
핵심!
-> 내가 걸어야할 조건이 WHERE절에서 조건을 명시할것인지, HAVING절에서 조건을 명시할것인지 파악해야한다.
SELECT 실행순서
🔽단, 개념적인 순서일뿐, 각 RDBMS에서 어떻게 구현했는지에 따라 다르다.
6 | SELECT attribute(s) or Aggregate function(s) |
1 | FROM table(s) |
2 | [WHERE conditions(s)] |
3 | [GROUP BY group attribute(s)] |
4 | [HAVING group condition(s)] |
5 | [ORDER BY attribute(s)] |
'◆SQL > SELECT' 카테고리의 다른 글
[SQL] 이전, 다음 - 조회 (1) | 2024.12.11 |
---|---|
[SELECT] 서브쿼리 (2) | 2024.08.09 |
[SQL] JOIN / UNION 차이? (1) | 2024.08.09 |
[SQL] SELECT - DISTINCT : SELECT바로 뒤에 작성, 중복제거 (0) | 2023.06.12 |