SQL процентил

Sql Procentil



Кои са двете общи думи, които са толкова тясно свързани, че бихте си помислили, че са еднакви? За нас, разработчиците на бази данни, това ще бъде SQL базата данни и статистиката.

Едно от често срещаните статистически изчисления, които се появяват дори при администриране на бази данни, е процентил.

Процентилът е статистическа мярка, която ни позволява да разделим набор от данни на равни части от сегменти. Ролята на процентилите е да осигурят представа за разпределението на данните, което е начинът, по който разбираме как са разпределени стойностите.







В този урок ще научим как можем да изчислим процентилите в SQL, за да разделим данните на различни сегменти.



Примерна таблица

Нека започнем с настройка на основна таблица, която съдържа примерни данни за демонстрационни цели. Това ни помага да илюстрираме как се държат различните методи за изчисляване на процентилите и произтичащия резултат.



Нека създадем таблица, наречена „продукти“, която съдържа информация за хранителни стоки. Клаузата „създаване на таблица“ е както следва:





CREATE TABLE продукти (

product_id INT PRIMARY KEY AUTO_INCREMENT,

име на продукт VARCHAR( 255 ),

категория VARCHAR( 255 ),

цена DECIMAL( 10 , 2 ),

количество INT,

дата на изтичане DATE,

баркод BIGINT

);

След като създадем таблицата, можем да продължим и да добавим примерните данни в таблицата. Можем да използваме следните изрази за „вмъкване“:

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности ( 'Шапка за готвач 25см' ,
'пекарна' ,
24,67 ,
57 ,
„2023-09-09“ ,
2854509564204 );

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности ( „Пъдпъдъчи яйца – консерва“ ,
'килер' ,
17,99 ,
67 ,
„29 септември 2023 г.“ ,
1708039594250 );

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности ( „Кафе - Egg Nog Capuccino“ ,
'пекарна' ,
92,53 ,
10 ,
„22 септември 2023 г.“ ,
8704051853058 );

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности ( 'Круша - Бодлива' ,
'пекарна' ,
65,29 ,
48 ,
„23 август 2023 г.“ ,
5174927442238 );

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности ( „Паста – ангелска коса“ ,
'килер' ,
48,38 ,
59 ,
'2023-08-05' ,
8008123704782 );

вмъкнете
в
продукти (име_на_продукт,
категория,
цена,
количество,
срок на годност,
баркод)
стойности ( „Вино – Просеко Валдобиадене“ ,
'произвеждам' ,
44.18 ,
3 ,
„13 март 2023 г.“ ,
6470981735653 );

Накрая трябва да имате таблица, както следва:



SQL процентил

Както можете да предположите, начинът за изчисляване на процентила може да се различава в зависимост от машината на базата данни. Най-често срещаният метод обаче е използването на функциите PERCENTILE_DISC() и PERCENTILE_CONT().

Тези функции са част от стандартната SQL спецификация (2003). Следователно е задължително да се поддържа от PostgreSQL и Oracle.

PERCENTILE_CONT()

Нека започнем с функцията PERCENTILE_CONT(). Тази функция ни позволява да изчислим процентните стойности като част от набора от данни.

Функцията връща интерполирани стойности, които може да не са точни за конкретната точка от данни във вашия набор от данни.

Синтаксисът на функцията е както следва:

PERCENTILE_CONT(процентил) WITHIN ГРУПА ( ПОРЪЧКА BY колона_име) НАД ();

Функцията приема следните параметри:

  • Процентил – Указва желаната стойност на процентила (0,0 до 1,0).
  • column_name – Означава колоната, за която искаме да изчислим процентила.
  • OVER () – Настройва функцията на прозореца, за да посочи целия набор от данни.

Пример за това как да използвате тази функция е както следва:

ИЗБЕРЕТЕ

PERCENTILE_CONT( 0,5 ) В РАМКИТЕ НА ГРУПА ( ПОРЪЧКА ПО цена) НАД () КАТО медиана

ОТ

продукти;

Забележка: Дадената заявка работи само в PostgreSQL, тъй като MySQL не поддържа използването на WITHIN GROUP.

Това изчислява 50 th процентил от предоставените данни.

PERCENTILE_DISC()

Можем да използваме функцията PERCENTILE_DISC(), за да изчислим стойността на процентила като дискретна стойност директно от набора от данни.

Функцията връща стойност, която съответства на действителна точка от данни.

Синтаксисът на функцията е както следва (PostgreSQL):

PERCENTILE_DISC(процентил) WITHIN ГРУПА ( ПОРЪЧКА BY колона_име) НАД ();

Примерен изход е както следва:

ИЗБЕРЕТЕ

PERCENTILE_DISC( 0,25 ) В РАМКИТЕ НА ГРУПА ( ПОРЪЧКА ПО цена) НАД () КАТО процентил_25

ОТ

продукти;

Това трябва да изчисли 25 th процентил от данните.

Заключение

Този урок описва как да използвате различните функции за изчисляване на процентилите в SQL бази данни.