PostgreSQL의 절별 주문

Bilal Shahid 2024년2월15일
  1. PostgreSQL ORDER BY
  2. PostgreSQL ORDER BY 절 사용
  3. PostgreSQL ORDER BY 절의 사용을 보여주는 코드 예제
PostgreSQL의 절별 주문

오늘의 기사에서는 해당 테이블의 속성을 기반으로 테이블의 결과를 정렬하는 방법을 교육합니다. 또한 ORDER BY 절을 사용하여 데이터를 정렬하는 방법을 보여줍니다. 이 명령을 이해하는 것부터 시작하겠습니다.

PostgreSQL ORDER BY

이를 이해하기 위해 SELECT 문에 대해 논의해 봅시다. 쿼리에 SELECT 문을 작성하면 지정된 테이블의 문을 기반으로 모든 데이터가 제공됩니다.

그 결과 데이터는 지정된 순서 없이 반환됩니다. 데이터를 특정 순서로 정렬하려면 어떻게 해야 합니까? SELECT 문과 함께 ORDER BY 명령을 사용합니다.

ORDER BY 명령을 사용하면 테이블의 하나 이상의 속성을 기반으로 데이터를 정렬할 수 있습니다. 해당 속성 집합을 사용하여 오름차순 또는 내림차순으로 정렬할 수도 있습니다.

이제 우리는 PostgreSQL ORDER BY 명령을 이해했으므로 사용법을 살펴보겠습니다.

PostgreSQL ORDER BY 절 사용

ORDER BY 명령은 쿼리의 나머지 부분과 함께 SELECTFROM 문 다음에 작성됩니다. 이 명령을 사용하기 위해 알아야 할 몇 가지 필수 세부 정보가 있습니다.

먼저 결과를 정렬하기 위한 매개변수로 사용할 열 또는 열 집합을 결정합니다. 해결하려는 문제의 범위에 따라 다릅니다.

이 기사의 뒷부분에서 예제를 사용하여 설명합니다. 기억해야 할 중요한 구문 세부 사항은 여러 속성이 매개변수로 사용되는 경우 쉼표(,)를 사용한다는 것입니다.

단일 매개변수의 구문:

ORDER BY column_name;

여러 매개변수에 대한 구문:

ORDER BY column1_name, column2_name;

여러 매개변수가 사용되는 경우 ORDER BY 절은 먼저 첫 번째 매개변수에 따라 데이터 세트를 확인합니다.

두 값이 첫 번째 매개변수에 따라 정확한 순서를 갖는 경우 두 번째 매개변수는 유사성을 제거하고 결과 데이터를 정렬하는 데 사용됩니다.

둘째, 속성을 기준으로 결과 데이터를 오름차순 또는 내림차순으로 정렬할 수 있습니다. ASCDESC 키워드는 각각 오름차순 또는 내림차순으로 정렬할지 여부를 정의합니다.

둘 중 하나를 지정하지 않으면 기본적으로 오름차순으로 정렬됩니다.

오름차순 정렬 구문:

ORDER BY column1_name ASC;

내림차순 정렬 구문:

ORDER BY column1_name DESC;

오름차순 및 내림차순으로 함께 정렬하기 위한 구문:

ORDER BY column1_name ASC, column2_name DESC;

마지막으로 ORDER BY 절에 의해 매개변수로 사용되는 속성/컬럼에 NULL 데이터가 있는 경우가 있습니다. 다른 값 앞이나 뒤에 NULL 값을 넣을지 여부를 지정할 수 있습니다.

NULLS LASTNULLS FIRST 키워드가 이 작업에 사용됩니다. ASC 옵션을 사용하는 경우 기본적으로 NULLS LAST가 선택됩니다.

반면 DESC 옵션을 사용하는 경우 NULLS FIRST가 기본적으로 선택됩니다. 키워드를 추가하여 필요에 따라 변경할 수 있습니다.

NULL 값을 먼저 넣는 구문:

ORDER BY column1_name ASC NULLS FIRST;

끝에 NULL 값을 넣는 구문:

ORDER BY column1_name DESC NULLS LAST;

PostgreSQL ORDER BY 절의 사용을 보여주는 코드 예제

예제를 통한 설명을 위해 먼저 다음과 같이 테이블을 만듭니다.

create table Orders(
    id int,
    name varchar(30) not null,
    OrderAmount int not null,
    constraint pk_customer primary key (id)
);

insert into Orders 
values
(1,'Ben', 250),
(2, 'James', 350),
(3, 'Carl', 550),
(4, 'Adam', 550);

select * from Orders;

출력:

postgresql의 order by 절 - 테이블 생성

이제 테이블이 생성되었습니다. ORDER BY 명령을 사용하는 가능한 모든 방법(위에서 논의됨)을 보여드리겠습니다.

하나의 표현식을 사용하는 PostgreSQL ORDER BY 명령

다음 코드는 주문 가격별로 정렬된 주문 테이블에서 고객 이름과 총 지출을 표시합니다.

OrderAmount의 오름차순

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount ASC;

출력:

postgresql에서 절로 정렬 - 오름차순으로 가격으로 정렬

OrderAmount의 내림차순

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC;

출력:

postgresql에서 절로 정렬 - 내림차순으로 가격으로 정렬

여러 표현식을 사용하는 PostgreSQL ORDER BY 명령

다음 코드는 주문 가격 및 고객 이름별로 정렬된 Orders 테이블에서 고객 이름 및 총 지출을 표시합니다.

오름차순으로 정렬

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount, name;

출력:

postgresql의 order by clause - 가격 및 고객 이름을 오름차순으로 정렬

내림차순으로 정렬

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name DESC;

출력:

postgresql의 order by clause - 가격 및 고객 이름을 내림차순으로 정렬

오름차순과 내림차순 모두

SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name ASC;

출력:

postgresql의 order by clause - 오름차순 및 내림차순으로 가격 및 고객 이름별로 정렬

PostgreSQL ORDER BY 명령(NULL 속성 값 포함)

아래에 제공된 이 예에서는 null 값이 있는 새 테이블을 사용합니다.

create table NULLTEST(
    name varchar(30) not null,
    number_ int
);

insert into NULLTEST
values 
('Jack', 250),
('Maguire', 350),
('Walker', 550),
('Michael', NULL);

select * from NULLTEST;

출력:

postgresql의 order by 절 - null 속성이 있는 명령별 주문

다음 코드는 NULL 값이 먼저 있는 number_ 열의 값으로 정렬된 namenumber_를 표시합니다.

SELECT name, number_
FROM NULLTEST
ORDER BY number_ ASC NULLS FIRST;

출력:

postgresql의 order by 절 - null 값을 먼저 정렬

NULL FIRSTORDER BY의 내림차순 옵션과 함께 사용하면 기본적으로 NULL 값이 먼저 표시되므로 불필요합니다. 다음 코드는 NULL 값이 있는 number_ 열의 값으로 정렬된 namenumber_를 표시합니다.

SELECT name, number_
FROM NULLTEST
ORDER BY number_ DESC NULLS LAST;

postgresql의 order by 절 - null 값을 마지막으로 정렬

여기서 ORDER BY의 오름차순 옵션과 함께 NULL LAST를 사용하는 것은 이 경우 기본적으로 NULL 값이 마지막에 나타나므로 불필요합니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub