[Oracle_Programmers] Lv1. SQL 정렬

🐷Jinie (juniorDeveloper)·2020년 11월 10일
0

Algorithm

목록 보기
9/27

1. 여러기준으로 정렬하기

  • 검색할 대상 : 아이디, 이름, 보호시작일
  • 정렬 기준 1 : 이름 ASC
  • 정렬 기준 2 : 보호시작일 DESC

정렬 우선순위
ORDER BY 컬럼명1, 컬럼명2 라고 적으면 정렬 기준이 컬럼명1이 1순위, 컬럼명2가 2순위가 된다.

  • 따라서 , ORDER BY NAME ASC, DATETIME DESC 라고 적으면
    이름 기준으로 ASC 먼저 정렬되고, 중복값이 있으면 DATETIME 기준으로 DESC 한번 더 정렬된다.
    정렬의 우선순위를 이용한 문제풀이

2. 서브쿼리 / MIN()

  • 검색할 대상 : 이름
  • 조건 : 가장 먼저 들어온

최대값, 최소값 가져오기(MAX, MIN 함수)
숫자만이 아닌 문자형 데이터에서도 사용가능

  • MIN 함수를 사용하면 레코드의 최소값 = 가장 먼저 들어온 DATETIME을 구할 수 있다.
  • MIN 함수를 이용해 구한 DATETIME을 서브쿼리로 같은 DATETIME을 가진 동물의 NAME을 구하는 쿼리를 작성하면 문제가 요구하는 결과를 얻을 수 있다.

3. 중복제거 / COUNT()

  • 검색할 대상 : 이름이 몇 개인지
  • 조건 : NULL제거 / 중복제거

COUNT(컬럼명) : NULL 값은 제외하고 COUNT
COUNT(*) : NULL도 포함하여 전부 COUNT

COUNT(DISTINCT 컬럼명) : 중복을 제거한 레코드의 수

  • COUNT 함수를 사용할 때, 컬럼명을 지정해서 NULL값을 세지 않도록 하고
  • 컬럼명 앞에 DISTINCT를 넣어서 중복을 제거한 수를 구한다.

4. 서브쿼리 / TO_CHAR()


  • 검색할 대상 : 시간대 / 입양건수
  • 조건 : 09:00 - 19:59 까지 시간대 / 시간대순 정렬

TO_CHAR() 를 이용한 '날짜변환형식' 참고
TO_CHAR(날짜,'HH24') 함수를 사용하면 24시간제 시간으로 변환.

  • TO_CHAR()함수를 이용해서 검색하고 서브쿼리로 넣어서 검색한다.

profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글