Merci beaucoup d'avance pour votre soutien. J'apprends SQL et je génère des données avec lesquelles jouer, mais je suis bloqué sur une chose simple. Le tableau dans la capture d'écran ci-dessous montre une partie de mon tableau sales20, qui montre les ventes réalisées par chaque employé en 2020 ainsi que les informations sur la région et la date.
Ventes de table 20
J'ai la même table de 2021. Ce que je veux faire, c'est fournir le nom de l'employé, la région et les ventes totales réalisées par l'employé en 2020 et 2021. J'ai écrit la requête suivante mais elle ne donne pas les bons chiffres. Cela apporte quelque chose de plus élevé que ce qu’il mérite. Le point important est que les salariés en 2020 et 2021 sont différents. Par exemple, il y a un nouvel employé en 2021, ce qui signifie qu'il doit également être répertorié, mais la colonne 2020 de cet employé doit être vide.
Ma requête :
SELECT sales20.staff, sales20.region, SUM(sales20.amount) AS Total_20, SUM(sales21.amount) AS Total_21 FROM sales20 JOIN sales21 ON sales20.staff = sales21.staff GROUP BY staff, region
Capture d'écran partielle des résultats :
Résultat :
Pouvez-vous me dire ce que j'ai fait de mal ?
Lorsque vous devez fusionner deux tables, vous les rejoignez -
Vous devez rejoindre 2 tables en fonction de la personne et de la région pour une jointure individuelle. Si vous vous inscrivez uniquement sur la base des employés, le système effectuera une adhésion un à plusieurs et vous obtiendrez une sortie corrompue.
Une autre approche consiste à fusionner les données des deux tables, puis à effectuer une agrégation sur cette base. Cela devrait vous donner des résultats précis.