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_LONGINT($vMin;$vMax;$vSum)
C_REAL($vAverage)
C_TEXT($AlertTxt)
REDUCE SELECTION([MOVIES];0)
$vMin:=0
$vMax:=0
$vAverage:=0
$vSum:=0
ALL RECORDS([MOVIES])
$vMin:=Min([MOVIES]Sold_Tickets)
$vMax:=Max([MOVIES]Sold_Tickets)
$vAverage:=Average([MOVIES]Sold_Tickets)
$vSum:=Sum([MOVIES]Sold_Tickets)
$AlertTxt:=""
$AlertTxt:=$AlertTxt+"Nombre minimum d'entrées : "+String($vMin)+Caractere(13)
$AlertTxt:=$AlertTxt+"Nombre maximum d'entrées : "+String($vMax)+Caractere(13)
$AlertTxt:=$AlertTxt+"Moyenne des entrées : "+String($vAverage)+Caractere(13)
$AlertTxt:=$AlertTxt+"Total des entrées : "+String($vSum)+Caractere(13)
ALERT($AlertTxt)
- En utilisant du code SQL :
C_LONGINT($vMin;$vMax;$vSum)
C_REAL($vAverage)
C_TEXT($AlertTxt)
$vMin:=0
$vMax:=0
$vAverage:=0
$vSum:=0
Begin SQL
SELECT MIN(Sold_Tickets),
MAX(Sold_Tickets),
AVG(Sold_Tickets),
SUM(Sold_Tickets)
FROM MOVIES
INTO :$vMin, :$vMax, :$vAverage, :$vSum;
End SQL
$AlertTxt:=""
$AlertTxt:=$AlertTxt+"Nombre minimum d'entrées : "+String($vMin)+Caractere(13)
$AlertTxt:=$AlertTxt+"Nombre maximum d'entrées : "+String($vMax)+Caractere(13)
$AlertTxt:=$AlertTxt+"Moyenne des entrées : "+String($vAverage)+Caractere(13)
$AlertTxt:=$AlertTxt+"Total des entrées : "+String($vSum)+Caractere(13)
ALERT($AlertTxt)
- En utilisant les commandes SQL génériques :
C_LONGINT($vMin;$vMax;$vSum)
C_REAL($vAverage)
C_TEXT($tQueryTxt)
C_TEXT($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 EXECUTE($tQueryTxt;$vMin;$vMax;$vAverage;$vSum)
SQL LOAD RECORD(SQL all records)
SQL LOGOUT
$AlertTxt:=""
$AlertTxt:=$AlertTxt+"Nombre minimum d'entrées : "+String($vMin)+Caractere(13)
$AlertTxt:=$AlertTxt+"Nombre maximum d'entrées : "+String($vMax)+Caractere(13)
$AlertTxt:=$AlertTxt+"Moyenne des entrées : "+String($vAverage)+Caractere(13)
$AlertTxt:=$AlertTxt+"Total des entrées : "+String($vSum)+Caractere(13)
ALERT($AlertTxt)
- En utilisant la commande SQL dynamique EXECUTE IMMEDIATE :
C_LONGINT($vMin;$vMax;$vSum)
C_REAL($vAverage)
C_TEXT($tQueryTxt)
C_TEXT($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;"
Begin SQL
EXECUTE IMMEDIATE :$tQueryTxt;
End SQL
$AlertTxt:=""
$AlertTxt:=$AlertTxt+"Nombre minimum d'entrées : "+String($vMin)+Caractere(13)
$AlertTxt:=$AlertTxt+"Nombre maximum d'entrées : "+String($vMax)+Caractere(13)
$AlertTxt:=$AlertTxt+"Moyenne des entrées : "+String($vAverage)+Caractere(13)
$AlertTxt:=$AlertTxt+"Total des entrées : "+String($vSum)+Caractere(13)
ALERT($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.