5월 20일 목요일 (8일차) - 정렬ㅇ

@_@·2021년 5월 20일
0

Database

목록 보기
14/28

<목차>
ㅇ ORDER BY 절


ㅇ 참고자료 <Do it! 오라클로 배우는 데이터베이스 입문>



ㅇ ORDER BY 절

  • ASC(ascending.어쎈딩) : 오름차순 정렬. 디폴트 값★
    • 디폴트값으로 주어진 건 생략 가능
  • DESC(descending.디쎈딩) : 내림차순 정렬
  • ORDER BY 밑에는 어떠한 명령문도 올 수 없어 (셀렉트 절의 가장 끝)
SELECT DISTINCT * 컬럼 ALIAS
FROM 테이블
WHERE 조건식 ( = 컬럼 + 연산자 +)
AND, OR 조건식
ORDER BY 컬럼
  • 오름차순이란
    • 문자는 a -> z
    • 숫자는 0 -> 100
    • 날짜는 시간순. 이전 -> 현재 (현재가 큰 값이야)
  • NULL은?
    • 오름차순은 맨 마지막
    • 내림차수는 맨 첫 번째
  • ORDER BY절에 알리아스 쓸 수 있나?? YES
    • WHERE절이 먼저 실행되기 때문에 ALIAS 쓸 수 없었어
    • 오더바이절은 맨 마지막에 실행되기 때문에 가능해
      앞 단의 모든 것들이 실행되고 출력할 것이 추출되면 그것을 정렬하기 때문에
    • 대신 사용했던 ALIAS 똑같은 포맷으로 지정해 줘야 해
  • 즉, ORDER BY절은 컬럼헤딩을 그대로 사용한다.
  • 예) ALIAS 포맷이 바뀌어서 에러가 남
    • 오더바이절의 annsal은 디폴트인 대문자가 되는데
    • 셀렉트절에는 "annsal" 사용해서 소문자 살렸어

ㅇ 여러 컬럼 지정 가능

  • 멀티플 중복 제거처럼
    • 첫 번째는 똑같은 애들끼리 그룹화하며 정렬
    • 이를 반복해서 마지막 컬럼은 그룹 내에서 정렬이 처리돼

ㅇ실습

SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC
  • 의역 : 부서별(부서는 오름차순 정렬)로 급여를 많이 받는 순서대로 출력해라.


CF. 버그이긴 하지만 가능하긴 해

SELECT last_name, salary*12 annsal
FROM employees
ORDER BY 2
  • 의미는 : 2번째 컬럼( salary*12 annsal)을 기준으로 오름차순을 정렬해라
  • 현업에서는 이런 버그 많이 사용하긴 해ㅋㅋ
  • 우리는 배우는 입장이니까 FM만 쓰자.

profile
STEP BY STEP

0개의 댓글