SELECT, FROM, WHERE, (GROUP BY, HAVING), ORDER BY
순서가 중요-------------------------------------------->
ORDER BY ~ ASC(DEFAULT), DESC
SELECT * FROM MEMBER ORDER BY NAME DESC;
SELECT * FROM MEMBER WHERE NAME LIKE ‘박%’ ORDER BY NAME DESC, HIT DESC;
집계함수 SUM, MIN, MAX, COUNT, AVG
SELECT WRITER_ID, COUNT(ID) COUNT
FROM NOTICE
--WHERE
GROUP BY WRITER_ID
ORDER BY COUNT DESC;
--작성자별 게시 수 많은 순으로 게시 수 내림차순
-- 작성순서 :
SELECT , FROM , WHERE , GROUP BY , HAVING , ORDER BY
-- 실행순서 ★ ★ ★ :
FROM -> CONNECT BY -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
: SELECT 에서 지은 별칭은 SELECT 이전 작업에서는 사용할 수 없다.
SELECT WRITER_ID, COUNT(N.ID) COUNT FROM NOTICE N
GROUP BY WRITER_ID
HAVING COUNT(N.ID) < 2;
순위함수
SELECT ROWNUM, ID, TITLE, WRITER_ID, REGDATE, HIT
FROM NOTICE
ORDER BY HIT;
-- ROWNUM이 섞인다. à ROW_NUMBER() OVER (ORDER BY HIT) : 정렬 후에 번호를 매긴다.
-- RANK() OVER (ORDERBY HIT) : 정렬 후에 등수를 매긴다.(값이 같으면 같은 공동등수)
-- DENSE_RANK() OVER (ORDER BY HIT) : 공동4등 이후에 5등
-- ROW_NUMBER() OVER (PARTITION BY WRITER_ID ORDER BY HIT) : 그룹별 파티션 후 정렬 후에 그룹별 번호를 매긴다.
서브쿼리
SELECT * FROM MEMBER WHERE ROWNUM BETWEEN 1 AND 10
è 최신 등록순으로 정렬한 결과에서 상위 10명을 원하는 경우 ?
SELECT * FROM (SELECT * FROM MEMBER ORDER BY REGDATE DESC)
WHERE ROWNUM BETWEEN 1 AND 10;
SELECT * FROM MEMBER WHERE AGE >= (SELECT AVG(AGE) FROM MEMBER);
--평균나이 이상인 사람들
'공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 뷰(VIEW), 데이터 딕셔너리 (0) | 2021.10.21 |
---|---|
[데이터베이스] UNION, UNION ALL, MINUS, INTERSECT (0) | 2021.10.21 |
[데이터베이스] 오라클 내장함수 - 숫자함수, 날짜함수, 변환함수, NULL관련 함수 (0) | 2021.10.21 |
[데이터베이스] 오라클 내장함수 - 문자열함수 (0) | 2021.10.21 |
[데이터베이스] 오라클 정규식을 이용한 패턴 연산 (0) | 2021.10.21 |