J'ai DB suivant:
Et je veux get le bénéfice total de tous les marchés. C'est le prix total des achats – le nombre total de salaire que vous avez payé pour l'employé.
J'ai donc de telles requêtes: je reçois la sum de tous les achats pour chaque marché
SELECT Markets.Title, SUM(Purchase.TotalPrice) sum FROM Purchase INNER JOIN Employees ON Purchase.Employee_ID = Employees.Employee_ID INNER JOIN Markets ON Employees.Market_ID = Markets.Market_ID GROUP BY Markets.Title
Dans une autre requête, je reçois la sum totale du salaire payé:
SELECT Markets.Title, SUM(Employees.Salary) sum FROM Employees INNER JOIN Markets ON Employees.Market_ID = Markets.Market_ID GROUP BY Markets.Title
Mais je suis confus comment combiner ces requêtes afin de tirer profit de chaque marché (sum de toutes les commands – sum de tous les salaires). Quelqu'un peut-il m'aider plz?
SELECT m.Title , e.TotalSalary , e.TotalPrice FROM dbo.Markets m JOIN ( SELECT e.Market_ID , TotalSalary = SUM(e.Salary) , TotalPrice = SUM(p.TotalPrice) FROM dbo.Employees e JOIN ( SELECT Employee_ID, TotalPrice = SUM(TotalPrice) FROM dbo.Purchase GROUP BY Employee_ID ) p ON p.Employee_ID = e.Employee_ID GROUP BY e.Market_ID ) e ON e.Market_ID = m.Market_ID
Quelque chose comme………
SELECT SUB_Q.Title, SUM(SUB_Q.Tot) FROM ( SELECT Markets.Title, sum(Purchase.TotalPrice) as Tot FROM Purchase INNER JOIN Employees ON Purchase.Employee_ID = Employees.Employee_ID INNER JOIN Markets ON Employees.Market_ID = Markets.Market_ID GROUP BY Markets.Title UNION ALL SELECT Markets.Title, sum(Employees.Salary) as Tot FROM Employees INNER JOIN Markets ON Employees.Market_ID = Markets.Market_ID GROUP BY Markets.Title ) SUB_Q GROUP BY SUB_Q.Title
il suffit d'append le mot-key UNION entre les deux SELECT
Voir ici pour plus de détails sur UNION: https://msdn.microsoft.com/fr-fr/library/ms180026%28v=sql.120%29.aspx