tout nouveau sur le forum (Niveau débutant en SQL), je me permets de vous solliciter pour m'aider à finaliser une requête.
Contexte
Je bosse sur un projet autour du trading.
Je récupère des données sous format .csv, que j'importe dans ma bdd.
La table concernée s'appelle : market1price
Colonne & Données
Les colonnes concernées dans ma réquete sont : country, market et price1, fin1 & fin2
Dans ma colonne country, j'ai des valeurs Varchar (france, england, belgium, etc...)
Dans ma colonne market, j'ai des valeurs Varchar (local, national, european)
Dans ma colonne price1, j'ai des valeurs Decimal (1.01, 1.03, 1.06, 1.15, etc...)
Dans ma colonne fin1, j'ai des valeurs int (1,2,3,4,etc...)
Dans ma colonne fin 2, j'ai des valeurs int (1,2,3,4,etc...)
But
Je dois calculer le profit ou la perte de chaque prix stocké, en fonction du résultat du calcul de fin1+fin2.
Si fin1+fin2 > 0, alors je pourrais définir si le prix de l'action a été profitable ou non.
Une fois les calculs effectués, je dois les afficher dans un tableau.
Il y aura un tableau pour chaque couple 'country' - 'market'.
Pour chaque couple, j'ai
une première colonne qui m'affiche l'ensemble des price1 (de manière unique, pas de doublons)
une deuxième colonne qui m'affiche le nombre de fois où l'on retrouve dans la colonne le price1
une troisième colonne qui m'affiche la résultat (somme de tous les profits et pertes) par price1.
Voici la requête :
Code : Tout sélectionner
SELECT country, market, price1, COUNT(*) AS nb_times,
SUM(IF(fin1 + fin2 > 0, 1*price1 - 1, -1)) AS 'PROFIT & LOSS'
FROM market1price
WHERE country = 'FRANCE' AND market = 'national' AND price1 BETWEEN 1.01 AND 1000
GROUP BY country, market, price1Au lieu d'avoir une liste allant de 1.01 à 1000, j'aimerais pouvoir effectuer le calcul et voir les résultats par tranche, du style :
1.01 to 1.05
1.06 to 1.10
1.11 to 1.20
etc...
Est ce que quelqu'un serait il capable de me filer un petit coup de main pour finaliser tout cela ?
Je vous remercie d'avance pour votre aide !