SQL 백분위수

Sql Baegbun Wisu



너무 밀접하게 연관되어 있어서 동일하다고 생각되는 두 가지 일반적인 단어는 무엇입니까? 우리 데이터베이스 개발자에게는 SQL 데이터베이스와 통계가 될 것입니다.

데이터베이스 관리에서도 흔히 나타나는 통계 계산 중 하나가 백분위수입니다.

백분위수는 데이터 세트를 세그먼트의 동일한 부분으로 나눌 수 있는 통계적 척도입니다. 백분위수의 역할은 값이 분산되는 방식을 이해하는 방법인 데이터 분포에 대한 통찰력을 제공하는 것입니다.







이 튜토리얼에서는 데이터를 다양한 세그먼트로 나누기 위해 SQL에서 백분위수를 계산하는 방법을 알아봅니다.



샘플 테이블

데모용 샘플 데이터가 포함된 기본 테이블을 설정하는 것부터 시작해 보겠습니다. 이는 백분위수를 계산하는 다양한 방법과 결과 출력이 어떻게 작동하는지 설명하는 데 도움이 됩니다.



식료품 정보가 포함된 '제품'이라는 테이블을 만들어 보겠습니다. '테이블 만들기' 절은 다음과 같습니다.





CREATE TABLE 제품(

product_id INT PRIMARY KEY AUTO_INCREMENT,

제품_이름 VARCHAR( 255 ),

카테고리 VARCHAR( 255 ),

가격 십진수( 10 , 2 ),

수량 INT,

만료_날짜 DATE,

바코드 BIGINT

);

테이블을 생성한 후에는 샘플 데이터를 테이블에 추가할 수 있습니다. 다음과 같은 'insert' 문을 사용할 수 있습니다.

끼워 넣다
~ 안으로
제품(제품_이름,
범주,
가격,
수량,
만료 날짜,
바코드)
값( '셰프모자 25cm' ,
'빵집' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

끼워 넣다
~ 안으로
제품(제품_이름,
범주,
가격,
수량,
만료 날짜,
바코드)
값( '메추리알 - 통조림' ,
'식료품 저장실' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

끼워 넣다
~ 안으로
제품(제품_이름,
범주,
가격,
수량,
만료 날짜,
바코드)
값( '커피 - 에그노그 카푸치노' ,
'빵집' ,
92.53 ,
10 ,
'2023-09-22' ,
8704051853058 );

끼워 넣다
~ 안으로
제품(제품_이름,
범주,
가격,
수량,
만료 날짜,
바코드)
값( '배 - 가시투성이' ,
'빵집' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

끼워 넣다
~ 안으로
제품(제품_이름,
범주,
가격,
수량,
만료 날짜,
바코드)
값( '파스타 - 엔젤헤어' ,
'식료품 저장실' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

끼워 넣다
~ 안으로
제품(제품_이름,
범주,
가격,
수량,
만료 날짜,
바코드)
값( '와인 - 프로세코 발도비아데네' ,
'생산하다' ,
44.18 ,
,
'2023-03-13' ,
6470981735653 );

결국 다음과 같은 테이블이 있어야 합니다.

SQL 백분위수

짐작할 수 있듯이, 백분위수를 계산하는 방법은 데이터베이스 엔진에 따라 다를 수 있습니다. 그러나 가장 일반적인 방법은 PERCENTILE_DISC() 및 PERCENTILE_CONT() 함수를 사용하는 것입니다.

이러한 함수는 표준 SQL 사양(2003)의 일부입니다. 따라서 PostgreSQL과 Oracle에서 지원될 수밖에 없습니다.

PERCENTILE_CONT()

PERCENTILE_CONT() 함수부터 시작해 보겠습니다. 이 함수를 사용하면 백분위수 값을 데이터세트의 일부로 계산할 수 있습니다.

이 함수는 데이터 세트의 특정 데이터 포인트에 정확하지 않을 수 있는 보간된 값을 반환합니다.

함수 구문은 다음과 같습니다.

PERCENTILE_CONT(백분위수) WITHIN 그룹 ( 주문하다 BY 컬럼명) OVER ();

이 함수는 다음 매개변수를 허용합니다.

  • 백분위수 - 원하는 백분위수 값(0.0~1.0)을 지정합니다.
  • column_name – 백분위수를 계산하려는 열을 나타냅니다.
  • OVER () - 전체 데이터세트를 지정하는 윈도우 기능을 설정합니다.

이 기능을 사용하는 방법에 대한 예는 다음과 같습니다.

선택하다

PERCENTILE_CONT( 0.5 ) 이내에 그룹 ( 주문하다 가격 기준) OVER () AS 중앙값

에서

제품;

참고: MySQL은 WITHIN GROUP 사용을 지원하지 않으므로 해당 쿼리는 PostgreSQL에서만 작동합니다.

이렇게 계산하면 50 제공된 데이터의 백분위수입니다.

PERCENTILE_DISC()

PERCENTILE_DISC() 함수를 사용하여 백분위수 값을 데이터세트에서 직접 이산 값으로 계산할 수 있습니다.

이 함수는 실제 데이터 포인트에 해당하는 값을 반환합니다.

함수 구문은 다음과 같습니다(PostgreSQL).

PERCENTILE_DISC(백분위수) WITHIN 그룹 ( 주문하다 BY 컬럼명) OVER ();

출력 예는 다음과 같습니다.

선택하다

PERCENTILE_DISC( 0.25 ) 이내에 그룹 ( 주문하다 가격 기준) OVER () AS 백분위수_25

에서

제품;

이것은 25를 계산해야합니다 데이터의 백분위수.

결론

이 튜토리얼에서는 다양한 함수를 사용하여 SQL 데이터베이스에서 백분위수를 계산하는 방법을 다루었습니다.