Décrivez ici votre problème ou ce que vous cherchez à faire.

Bonjour,
Je dispose d'une base de données avec les ventes journalières sur 4 ans. Je souhaiterais à partir d'une requête SQL afficher le CA des 2 derniers mois. Je suis bloquée, voici mon code
SELECT
C.country,
EXTRACT(YEAR FROM O.shippedDate) AS year,
EXTRACT(MONTH FROM O.shippedDate) AS month,
SUM(OD.quantityOrdered * OD.priceEach) AS orderCA
FROM
toys_and_models.orders AS O
INNER JOIN
toys_and_models.orderdetails AS OD ON O.orderNumber = OD.orderNumber
INNER JOIN
toys_and_models.customers AS C ON C.customerNumber = O.customerNumber
WHERE
O.status = 'Shipped' AND EXTRACT(YEAR FROM O.shippedDate) = 2024
GROUP BY country,YEAR, MONTH
ORDER BY country DESC;

Entourez votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)

Ce que je veux

J'aimerais afficher le CA des 2 derniers mois après avoir sélectionner une année et un mois pour obtenir les résultats du mois sélectionné et ceux du mois précédent.

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

1 réponse


Salut !

Compliqué de t'aider avec le peu d'informations que tu donnes... Tu aimerais obtenir uniquement le CA des 2 derniers mois en global ? Afficher un CA pour chaque client ? Jouet ?

Pour permettre de récupérer uniquement les résultats pour les 2 derniers mois je te conseille de regarder la fonction DATE_ADD de SQL (https://www.w3schools.com/mysql/func_mysql_date_add.asp) ainsi que la fonction SYSDATE (https://www.w3schools.com/mysql/func_mysql_sysdate.asp).
Concrètement tu n'auras qu'à regarder si shippedDate est supérieure ou égale à SYSDATE - 2 mois (DATE_ADD(SYSDATE(), INTERVAL -2 MONTH)).

En espérant t'avoir aidé.