- ORDER BY는 테이블에서 오름차순 또는 내림차순으로 레코드를 가져오기 위해 SELECT 쿼리와 함께 사용되는 SQL 절입니다.
- 테이블의 열에 저장된 정수와 문자열 값을 정렬하는 것처럼 SQL 테이블의 열에 저장된 날짜도 정렬할 수 있습니다.
- 모든 레코드는 기본적으로 오름차순으로 정렬됩니다. 레코드를 내림차순으로 정렬하려면 DESC 키워드를 사용합니다.
이 개념을 더 명확하게 이해하기 위해 몇 가지 실제 사례를 살펴보겠습니다. 우리는 모든 쿼리를 작성하기 위해 MySQL 데이터베이스를 사용할 것입니다.
다음 데이터를 사용하여 MySQL 데이터베이스에 직원이라는 테이블을 생성했다고 가정해 보겠습니다.
ID | 이름 | 샐러리 | 가입_날짜 | 생년월일 |
---|---|---|---|---|
1 | 로힛 더보기 | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
2 | 쿠날 모히트 | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
삼 | 사우라브 자 | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
4 | 아난트 데사이 | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
5 | 크리슈나 샤르마 | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
6 | 바베시 자이나교 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
예시 1:
생년월일 오름차순으로 정렬된 직원의 모든 세부 정보를 표시하는 쿼리를 작성하세요.
질문:
mysql> SELECT *FROM employees ORDER BY DOB;
직원의 생년월일 오름차순으로 레코드를 정렬하고 싶기 때문에 'DOB' 컬럼에 ORDER BY 절을 적용했습니다.
다음과 같은 결과가 출력됩니다.
ID | 이름 | 샐러리 | 가입_날짜 | 생년월일 |
---|---|---|---|---|
4 | 아난트 데사이 | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
삼 | 사우라브 자 | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
2 | 쿠날 모히트 | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | 로힛 더보기 | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
6 | 바베시 자이나교 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
5 | 크리슈나 샤르마 | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
위 쿼리의 결과를 보면 DOB의 오름차순으로 레코드가 표시되는 것을 알 수 있습니다.
예 2:
입사일자 내림차순으로 정렬된 사원의 모든 세부정보를 출력하는 쿼리를 작성하세요.
질문:
mysql> SELECT *FROM employees ORDER BY Joining_Date DESC;
직원들의 입사일을 기준으로 내림차순으로 레코드를 정렬하고 싶어서 'Joining_Date' 컬럼에 DESC 키워드와 함께 ORDER BY 절을 적용했습니다.
다음과 같은 결과가 출력됩니다.
ID | 이름 | 샐러리 | 가입_날짜 | 생년월일 |
---|---|---|---|---|
6 | 바베시 자이나교 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
2 | 쿠날 모히트 | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | 로힛 더보기 | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
4 | 아난트 데사이 | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
삼 | 사우라브 자 | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
5 | 크리슈나 샤르마 | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
위 질의 결과를 보면, 가입 날짜의 내림차순으로 기록이 표시되는 것을 알 수 있습니다.
예시 3:
사원의 모든 세부사항을 출생연도 오름차순으로 정렬하여 출력하는 쿼리를 작성하세요.
질문:
mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%Y') AS Year_of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%Y');
직원의 출생연도 오름차순으로 레코드를 정렬하고 싶기 때문에 ORDER BY 절을 적용했습니다. DATE_FORMAT() 함수를 DOB 컬럼에 '%Y' 매개변수를 적용하여 'DOB'에서 연도만 추출한다.
자바 수학 펑
다음과 같은 결과가 출력됩니다.
ID | 이름 | 샐러리 | 가입_날짜 | 연도_생년월일 |
---|---|---|---|---|
4 | 아난트 데사이 | 59000 | 2018-08-27 | 1978년 |
삼 | 사우라브 자 | 61000 | 2015-05-01 | 1983년 |
2 | 쿠날 모히트 | 34000 | 2021-01-01 | 1990년 |
1 | 로힛 더보기 | 50000 | 2020-02-08 | 1991년 |
6 | 바베시 자이나교 | 37000 | 2021-07-03 | 1998년 |
5 | 크리슈나 샤르마 | 48000 | 2010-10-23 | 1999년 |
위 질의 결과를 보면, 해당 직원의 출생연도 오름차순으로 기록이 출력되는 것을 알 수 있다.
예시 4:
출생시간의 내림차순으로 정렬된 직원의 모든 세부정보를 표시하는 쿼리를 작성하세요.
질문:
mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%H') AS Hour_Of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%H') DESC;
직원의 출생 시간을 기준으로 내림차순으로 레코드를 정렬하고 싶었기 때문에 DESC 키워드와 함께 ORDER BY 절을 적용했습니다. DATE_FORMAT() 함수를 DOB 컬럼에 '%H' 파라미터를 적용하여 'DOB' 컬럼에서 생년월일만 추출한다.
다음과 같은 결과가 출력됩니다.
ID | 이름 | 샐러리 | 가입_날짜 | Hour_Of_Birth |
---|---|---|---|---|
2 | 쿠날 모히트 | 34000 | 2021-01-01 | 19 |
1 | 로힛 더보기 | 50000 | 2020-02-08 | 18 |
4 | 아난트 데사이 | 59000 | 2018-08-27 | 열 다섯 |
6 | 바베시 자이나교 | 37000 | 2021-07-03 | 13 |
삼 | 사우라브 자 | 61000 | 2015-05-01 | 12 |
5 | 크리슈나 샤르마 | 48000 | 2010-10-23 | 02 |
위 질의 결과를 보면, 해당 직원의 출생시간이 큰 순서대로 기록이 출력되는 것을 알 수 있다.
예시 5:
입사년도 오름차순으로 정렬된 사원의 모든 세부정보를 출력하는 쿼리를 작성해보세요.
질문:
현재까지의 변환기 문자열
mysql> SELECT ID, Name, Salary, DOB, DATE_FORMAT (Joining_Date, '%Y') AS Year_Of_Joining FROM employees ORDER BY DATE_FORMAT (Joining_Date, '%Y');
입사년도를 오름차순으로 정렬하고 싶어서 ORDER BY 절을 적용했습니다. Joining_Date 컬럼에 '%Y' 매개변수를 지정하여 DATE_FORMAT() 함수를 적용하면 'Joining_Date'에서 연도만 추출됩니다.
다음과 같은 결과가 출력됩니다.
ID | 이름 | 샐러리 | 연도_가입_ | 생년월일 |
---|---|---|---|---|
5 | 크리슈나 샤르마 | 48000 | 2010 | 1999-03-21 02:14:56 |
삼 | 사우라브 자 | 61000 | 2015년 | 1983-02-20 12:18:45 |
4 | 아난트 데사이 | 59000 | 2018 | 1978-06-29 15:45:13 |
1 | 로힛 더보기 | 50000 | 2020 | 1991-01-28 18:06:08 |
2 | 쿠날 모히트 | 34000 | 2021 | 1990-05-15 19:10:00 |
6 | 바베시 자이나교 | 37000 | 2021 | 1998-08-02 13:00:01 |
위 질의 결과를 보면, 입사년도의 오름차순으로 기록이 조회되는 것을 알 수 있다.
예시 6:
사원의 모든 내역을 입사일 기준으로 내림차순으로 정렬하여 출력하는 쿼리를 작성해보세요.
질문:
mysql> SELECT ID, Name, Salary, DAY (Joining_Date) AS Day_Of_Joining, DOB FROM employees ORDER BY DAY (Joining_Date) DESC;
입사일 기준으로 내림차순으로 기록을 정렬하고 싶어서 DESC 키워드와 함께 ORDER BY 절을 적용했습니다. 'Joining_Date' 컬럼에 DAY() 함수를 적용하여 Joining_Date에서 가입한 날짜만 추출합니다.
다음과 같은 결과가 출력됩니다.
ID | 이름 | 샐러리 | Day_Of_참여 | 생년월일 |
---|---|---|---|---|
4 | 아난트 데사이 | 59000 | 27 | 1978-06-29 15:45:13 |
5 | 크리슈나 샤르마 | 48000 | 23 | 1999-03-21 02:14:56 |
1 | 로힛 더보기 | 50000 | 8 | 1991-01-28 18:06:08 |
6 | 바베시 자이나교 | 37000 | 삼 | 1998-08-02 13:00:01 |
2 | 쿠날 모히트 | 34000 | 1 | 1990-05-15 19:10:00 |
삼 | 사우라브 자 | 61000 | 1 | 1983-02-20 12:18:45 |
위 질의 결과를 보면, 입사일 기준으로 내림차순으로 기록이 출력되는 것을 알 수 있다.
예시 7:
사원의 생일을 오름차순으로 정렬하여 사원의 모든 정보를 출력하는 쿼리를 작성하세요.
질문:
mysql> SELECT ID, Name, Salary, Joining_Date, DAY (DOB) AS Day_Of_Birth FROM employees ORDER BY DAY (DOB);
직원의 생일을 기준으로 오름차순으로 정렬하고 싶기 때문에 ORDER BY 절을 적용했습니다. 'DOB' 컬럼에 DAY() 함수를 적용하여 DOB에서 생년월일만 추출한다.
다음과 같은 결과가 출력됩니다.
ID | 이름 | 샐러리 | 연도_가입_ | 출생의 날 |
---|---|---|---|---|
6 | 바베시 자이나교 | 37000 | 2021-07-03 | 2 |
2 | 쿠날 모히트 | 34000 | 2021-01-01 | 열 다섯 |
삼 | 사우라브 자 | 61000 | 2015-05-01 | 이십 |
5 | 크리슈나 샤르마 | 48000 | 2010-10-23 | 이십 일 |
1 | 로힛 더보기 | 50000 | 2020-02-08 | 28 |
4 | 아난트 데사이 | 59000 | 2018-08-27 | 29 |
위 질의 결과를 보면, 해당 직원의 생일을 기준으로 오름차순으로 기록이 출력되는 것을 알 수 있다.
예시 8:
사원의 생일을 기준으로 오름차순으로 정렬하여 사원의 모든 정보를 출력하는 쿼리를 작성하세요.
질문:
mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (DOB);
ID | 이름 | 샐러리 | 가입_날짜 | 생년월일 |
---|---|---|---|---|
1 | 로힛 더보기 | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
삼 | 사우라브 자 | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
5 | 크리슈나 샤르마 | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
2 | 쿠날 모히트 | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
4 | 아난트 데사이 | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
6 | 바베시 자이나교 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
위 질의 결과를 보면, 해당 사원의 출생월을 기준으로 오름차순으로 기록이 출력되는 것을 알 수 있다.
예시 9:
사원의 입사월을 기준으로 오름차순으로 정렬하여 사원의 모든 내역을 출력하는 쿼리를 작성해보세요.
질문:
mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (Joining_Date);
입사월을 기준으로 오름차순으로 정렬하고 싶기 때문에 ORDER BY 절을 적용했습니다. Joining_Date 컬럼에 MONTH() 함수를 적용하여 Joining_Date에서 가입월만 추출합니다.
다음과 같은 결과가 출력됩니다.
ID | 이름 | 샐러리 | 가입_날짜 | 생년월일 |
---|---|---|---|---|
2 | 쿠날 모히트 | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | 로힛 더보기 | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
삼 | 사우라브 자 | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
6 | 바베시 자이나교 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
4 | 아난트 데사이 | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
5 | 크리슈나 샤르마 | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
위 질의 결과를 보면, 입사월을 기준으로 오름차순으로 기록이 출력되는 것을 알 수 있다.