SQL-percentiel

Sql Percentiel



Wat zijn de twee veel voorkomende woorden die zo nauw verwant zijn dat je zou denken dat ze hetzelfde zijn? Voor ons databaseontwikkelaars zou dat de SQL-database en de statistieken zijn.

Een van de meest voorkomende statistische berekeningen die zelfs bij databasebeheer naar voren komen, is een percentiel.

Een percentiel is een statistische maatstaf waarmee we een dataset in gelijke delen van segmenten kunnen verdelen. De rol van percentielen is om inzicht te geven in de gegevensverdeling. Zo begrijpen we hoe de waarden zijn verspreid.







In deze tutorial leren we hoe we de percentielen in SQL kunnen berekenen om de gegevens in verschillende segmenten te verdelen.



Voorbeeldtabel

Laten we beginnen met het opzetten van een basistabel die voorbeeldgegevens bevat voor demonstratiedoeleinden. Dit helpt ons te illustreren hoe de verschillende methoden voor het berekenen van de percentielen zich gedragen en de resulterende output.



Laten we een tabel maken met de naam 'producten' die de boodschappeninformatie bevat. De clausule 'tabel maken' is als volgt:





MAAK TAFEL producten (

product_id INT PRIMAIRE SLEUTEL AUTO_INCREMENT,

productnaam VARCHAR( 255 ),

categorie VARCHAR( 255 ),

prijs DECIMAAL( 10 , 2 ),

hoeveelheid INT,

vervaldatum DATUM,

streepjescode BIGINT

);

Nadat we de tabel hebben gemaakt, kunnen we doorgaan en de voorbeeldgegevens aan de tabel toevoegen. We kunnen de volgende “insert”-verklaringen gebruiken:

invoegen
naar binnen
producten (productnaam,
categorie,
prijs,
hoeveelheid,
uiterste houdbaarheidsdatum,
streepjescode)
waarden ( 'Koksmuts 25cm' ,
'bakkerij' ,
24.67 ,
57 ,
'09-09-2023' ,
2854509564204 );

invoegen
naar binnen
producten (productnaam,
categorie,
prijs,
hoeveelheid,
uiterste houdbaarheidsdatum,
streepjescode)
waarden ( 'Kwarteleitjes - uit blik' ,
'voorraadkast' ,
17,99 ,
67 ,
'29-09-2023' ,
1708039594250 );

invoegen
naar binnen
producten (productnaam,
categorie,
prijs,
hoeveelheid,
uiterste houdbaarheidsdatum,
streepjescode)
waarden ( 'Koffie - Egg Nog Capuccino' ,
'bakkerij' ,
92.53 ,
10 ,
'22-09-2023' ,
8704051853058 );

invoegen
naar binnen
producten (productnaam,
categorie,
prijs,
hoeveelheid,
uiterste houdbaarheidsdatum,
streepjescode)
waarden ( 'Peer - Stekelig' ,
'bakkerij' ,
65,29 ,
48 ,
'23-08-2023' ,
5174927442238 );

invoegen
naar binnen
producten (productnaam,
categorie,
prijs,
hoeveelheid,
uiterste houdbaarheidsdatum,
streepjescode)
waarden ( 'Pasta - Engelenhaar' ,
'voorraadkast' ,
48.38 ,
59 ,
'05-08-2023' ,
8008123704782 );

invoegen
naar binnen
producten (productnaam,
categorie,
prijs,
hoeveelheid,
uiterste houdbaarheidsdatum,
streepjescode)
waarden ( 'Wijn - Prosecco Valdobiaddene' ,
'produceren' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Aan het einde zou je een tabel als volgt moeten hebben:



SQL-percentiel

Zoals u kunt raden, kan de manier waarop het percentiel wordt berekend verschillen, afhankelijk van de database-engine. De meest gebruikelijke methode is echter het gebruik van de functies PERCENTILE_DISC() en PERCENTILE_CONT().

Deze functies maken deel uit van de Standard SQL-specificatie (2003). Daarom wordt het ongetwijfeld ondersteund door PostgreSQL en Oracle.

PERCENTILE_CONT()

Laten we beginnen met de functie PERCENTILE_CONT(). Met deze functie kunnen we de percentielwaarden berekenen als een fractie van de gegevensset.

De functie retourneert geïnterpoleerde waarden die mogelijk niet nauwkeurig zijn voor het specifieke gegevenspunt in uw gegevensset.

De syntaxis van de functie is als volgt:

PERCENTILE_CONT(percentiel) BINNEN GROEP ( VOLGORDE BY kolomnaam) OVER ();

De functie accepteert de volgende parameters:

  • Percentiel – Het specificeert de gewenste percentielwaarde (0,0 tot 1,0).
  • column_name – Dit geeft de kolom aan waarvoor we het percentiel willen berekenen.
  • OVER () – Het stelt de vensterfunctie in om de volledige dataset te specificeren.

Een voorbeeld van het gebruik van deze functie is als volgt:

SELECTEER

PERCENTILE_CONT( 0,5 ) BINNENIN GROEP ( VOLGORDE OP prijs) OVER () AS mediaan

VAN

producten;

Opmerking: de opgegeven query werkt alleen in PostgreSQL omdat MySQL het gebruik van WITHIN GROUP niet ondersteunt.

Dit berekent de 50 e percentiel van de verstrekte gegevens.

PERCENTILE_DISC()

We kunnen de functie PERCENTILE_DISC() gebruiken om de percentielwaarde rechtstreeks vanuit de gegevensset als een discrete waarde te berekenen.

De functie retourneert een waarde die overeenkomt met een feitelijk gegevenspunt.

De syntaxis van de functie is als volgt (PostgreSQL):

PERCENTILE_DISC(percentiel) BINNEN GROEP ( VOLGORDE BY kolomnaam) OVER ();

Een voorbeelduitvoer is als volgt:

SELECTEER

PERCENTILE_DISC( 0,25 ) BINNENIN GROEP ( VOLGORDE BY prijs) OVER () AS percentiel_25

VAN

producten;

Dit zou de 25 moeten berekenen e percentiel van de gegevens.

Conclusie

In deze tutorial werd besproken hoe u de verschillende functies kunt gebruiken om de percentielen in SQL-databases te berekenen.