ASC(오름차순), DESC(내림차순)
<내림차순>
SELECT * FROM MEMBERS ORDER BY NAME DESC;
<오름차순>
SELECT * FROM MEMBERS ORDER BY NAME ASC;
SELECT * FROM MEMBERS ORDER BY NAME;
SELECT * FROM MEMBERS ORDER BY AGE(컬럼1) DESC, REGDATE(컬럼2) DESC;
SELECT COUNT(*) FROM NOTICE;
SELECT WRITER_ID, COUNT(ID) CNT NOTICE GROUP BY WRITER ID; | 작성글 개수
SELECT WRITER_ID, COUNT(ID) CNT NOTICE
GROUP BY WRITER ID
ORDER BY COUNT(ID) DESC;
회원별 게시글 수가 2 이하인 레코드의 게시글 수
SELECT WRITER_ID, COUNT(ID) CNT FROM NOTICE
GROUP BY WRITER_ID
HAVING COUNT(ID) <= 2;
SELECT ROWNUM ~~ + ORDER BY 시, ROWNUM이 WHERE 절 순서에서 만들어짐, ORDER BY 와 충돌
ROW_NUMBER() 함수 사용
SELECT ROWNUM, 컬럼 1, 컬럼2 , ...
FROM 테이블
ORDER BY 컬럼 5; > ROWNUM이 섞임
함수 | 설명 |
---|---|
ROW_NUMBER() OVER(ORDER BY 정렬힐 값) ~ | 정렬된 상태에서 ROWNUM |
RANK() OVER(ORDER BY 정렬할 값) ~ | 등수 (4등 4등 6등) |
DENSE_RANK() OVER(ORDER BY 정렬할 값) ~ | 겹치는 등수가 있을 경우, (4등 4등 5등) |
RANK() OVER(PARTITION BY 기준값 ORDER BY 정렬할 값) ~ | 작성자를 기준으로 정렬값을 정렬(작성자별 정렬값들 정렬) |
구절의 작성 순서를 바꾸는 경우 오류 발생 > 서브쿼리 사용
SELECT * FROM (SELECT * FROM MEMBERS ORDER BY REGDATE DESC) >(서브쿼리)
WHERE ROWNUM BETWEEN 1 AND 10;
SELECT * FROM (SELECT AVG(AGE) FROM MEMBERS) AVG_AGE
WHERE AGE >= AVG_AGE;