Les fonctions statistiques permettent d'effectuer des calculs sur des séries de valeurs. Le SQL contient de nombreuses fonctions d'agrégation telles que MIN, MAX, AVG, SUM, etc. A l'aide de fonctions d'agrégation, nous souhaitons effectuer des statistiques sur le nombre total d'entrées par an. Le résultat devra être trié par année. Pour cela, nous devons effectuer la somme des entrées pour chaque film puis trier le résultat par année.
Voici le code 4D correspondant à cette requête :
C_ENTIER LONG($vMin;$vMax;$vSum)
C_REEL($vAverage)
C_TEXTE($AlertTxt)
REDUIRE SELECTION([MOVIES];0)
$vMin:=0
$vMax:=0
$vAverage:=0
$vSum:=0
TOUT SELECTIONNER([MOVIES])
$vMin:=Min([MOVIES]Sold_Tickets)
$vMax:=Max([MOVIES]Sold_Tickets)
$vAverage:=Moyenne([MOVIES]Sold_Tickets)
$vSum:=Somme([MOVIES]Sold_Tickets)
$AlertTxt:=""
$AlertTxt:=$AlertTxt+"Nombre minimum d'entrées : "+Chaine($vMin)+Caractere(13)
$AlertTxt:=$AlertTxt+"Nombre maximum d'entrées : "+Chaine($vMax)+Caractere(13)
$AlertTxt:=$AlertTxt+"Moyenne des entrées : "+Chaine($vAverage)+Caractere(13)
$AlertTxt:=$AlertTxt+"Total des entrées : "+Chaine($vSum)+Caractere(13)
ALERTE($AlertTxt)
- En utilisant du code SQL :
C_ENTIER LONG($vMin;$vMax;$vSum)
C_REEL($vAverage)
C_TEXTE($AlertTxt)
$vMin:=0
$vMax:=0
$vAverage:=0
$vSum:=0
Debut SQL
SELECT MIN(Sold_Tickets),
MAX(Sold_Tickets),
AVG(Sold_Tickets),
SUM(Sold_Tickets)
FROM MOVIES
INTO :$vMin, :$vMax, :$vAverage, :$vSum;
Fin SQL
$AlertTxt:=""
$AlertTxt:=$AlertTxt+"Nombre minimum d'entrées : "+Chaine($vMin)+Caractere(13)
$AlertTxt:=$AlertTxt+"Nombre maximum d'entrées : "+Chaine($vMax)+Caractere(13)
$AlertTxt:=$AlertTxt+"Moyenne des entrées : "+Chaine($vAverage)+Caractere(13)
$AlertTxt:=$AlertTxt+"Total des entrées : "+Chaine($vSum)+Caractere(13)
ALERTE($AlertTxt)
- En utilisant les commandes SQL génériques :
C_ENTIER LONG($vMin;$vMax;$vSum)
C_REEL($vAverage)
C_TEXTE($tQueryTxt)
C_TEXTE($AlertTxt)
$vMin:=0
$vMax:=0
$vAverage:=0
$vSum:=0
SQL LOGIN(SQL_INTERNAL;"";"")
$tQueryTxt:=""
$tQueryTxt:=$tQueryTxt+"SELECT MIN(Sold_Tickets), MAX(Sold_Tickets), AVG(Sold_Tickets), SUM(Sold_Tickets)"
$tQueryTxt:=$tQueryTxt+" FROM MOVIES"
SQL EXECUTER($tQueryTxt;$vMin;$vMax;$vAverage;$vSum)
SQL CHARGER ENREGISTREMENT(SQL tous les enregistrements)
SQL LOGOUT
$AlertTxt:=""
$AlertTxt:=$AlertTxt+"Nombre minimum d'entrées : "+Chaine($vMin)+Caractere(13)
$AlertTxt:=$AlertTxt+"Nombre maximum d'entrées : "+Chaine($vMax)+Caractere(13)
$AlertTxt:=$AlertTxt+"Moyenne des entrées : "+Chaine($vAverage)+Caractere(13)
$AlertTxt:=$AlertTxt+"Total des entrées : "+Chaine($vSum)+Caractere(13)
ALERTE($AlertTxt)
- En utilisant la commande SQL dynamique EXECUTE IMMEDIATE :
C_ENTIER LONG($vMin;$vMax;$vSum)
C_REEL($vAverage)
C_TEXTE($tQueryTxt)
C_TEXTE($AlertTxt)
$vMin:=0
$vMax:=0
$vAverage:=0
$vSum:=0
$tQueryTxt:=""
$tQueryTxt:=$tQueryTxt+"SELECT MIN(Sold_Tickets), MAX(Sold_Tickets), AVG(Sold_Tickets), SUM(Sold_Tickets)"
$tQueryTxt:=$tQueryTxt+" FROM MOVIES"
$tQueryTxt:=$tQueryTxt+" INTO :$vMin, :$vMax, :$vAverage, :$vSum;"
Debut SQL
EXECUTE IMMEDIATE :$tQueryTxt;
Fin SQL
$AlertTxt:=""
$AlertTxt:=$AlertTxt+"Nombre minimum d'entrées : "+Chaine($vMin)+Caractere(13)
$AlertTxt:=$AlertTxt+"Nombre maximum d'entrées : "+Chaine($vMax)+Caractere(13)
$AlertTxt:=$AlertTxt+"Moyenne des entrées : "+Chaine($vAverage)+Caractere(13)
$AlertTxt:=$AlertTxt+"Total des entrées : "+Chaine($vSum)+Caractere(13)
ALERTE($AlertTxt)
Pour tester ces exemples, lancez la base "4D SQL Code Samples" et affichez la boîte de dialogue principale. Choisissez le mode d'interrogation du moteur de 4D et cliquez sur le bouton Utilisation de requêtes statistiques.