본문 바로가기

DB/SQL

SQL :: ORDER BY 우선 정렬 순서

 

ORDER BY

오라클에서 검색된 결과의 행을 정렬할 때는 ORDER BY 절을 사용한다. 정렬 방법에는 오름차순 정렬(ascending sort ASC)과 내림차순(descending sort DESC) 정렬 두 가지가 있다. INDEX, 컬럼, ALIAS, 함수를 기준으로 정렬할 수 있다.

 

SQL문 실행 순서는 다음과 같다

FROM절(JOIN)->WHERE절->SELECT절->ORDER BY절

따라서 어떤 구문이 쿼리에 언제 영향을 미칠 수 있는지 고려해서 쿼리문을 작성해야 한다. ORDER BY는 맨 마지막에 값에 영향을 주지 않고 정렬만을 나타낸다.

 

문법

SELECT 컬럼명
  FROM 테이블명
 WHERE 조건식 --사용시 순서
 GROUP BY 컬럼명 --사용시 순서
 ORDER BY 컬럼명1 [ASC|DESC], 컬럼명2 [ASC|DESC], 컬럼명3 [ASC|DESC]...

 

예시

SELECT TEAM_ID, PLAYER_NAME, BACK_NO
	FROM PLAYER p 
	ORDER BY BACK_NO DESC; --NULL을 가장 큰 값으로 인식. DESC (내림차순)
    
    
 SELECT TEAM_ID ID, PLAYER_NAME NAME,BACK_NO NUM, "POSITION"
 	FROM PLAYER p 
-- 	ORDER BY TEAM_ID , PLAYER_ID , PLAYER_NAME , BACK_NO; -- 컬럼명 ASC오름차순
-- 	ORDER BY BACK_NO DESC; -- 정렬은 NULL을 가장 큰 값으로 인식
-- 	ORDER BY 1,2,3;
-- 	ORDER BY ID, NAME, NUM  --Alias도 가능
--	ORDER BY TEAM_ID ,1, NUM; 


 SELECT  TEAM_ID, AVG(HEIGHT) AVG
	FROM PLAYER p
 	GROUP BY TEAM_ID
-- 	ORDER BY AVG(HEIGHT) DESC;
--	ORDER BY AVG DESC;
-- 	ORDER BY 2 DESC;

 

예시 문제

--홈팀의 승률을 구하라

SELECT t.TEAM_NAME AS "홈팀", COUNT(CASE WHEN s.HOME_SCORE > s.AWAY_SCORE
		THEN 1 END)/ COUNT(s.HOME_SCORE) AS "승률"
	FROM SCHEDULE s JOIN TEAM t
	ON s.HOMETEAM_ID = t.TEAM_ID
	GROUP BY TEAM_NAME;

'DB > SQL' 카테고리의 다른 글

SQL :: 식별자 관계와 비식별자 관계  (0) 2024.04.27
SQL :: GROUP BY, HAVING  (2) 2024.04.26
SQL :: OUTER JOIN  (0) 2024.04.26
SQL :: INNER, CROSS, NATURAL JOIN  (0) 2024.04.25
SQL :: 내장함수(STORED FUNCTION)  (0) 2024.04.25