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:
invoegennaar 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:
SELECTEERPERCENTILE_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:
SELECTEERPERCENTILE_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.