I have 2 tables:
Customer table
| CustomerId | FirstName | LastName | Country |
|---|---|---|---|
| 1 | Luís | Gonçalves | Brazil |
| 2 | Leonie | Köhler | Germany |
| 3 | François | Tremblay | Canada |
| 4 | Bjørn | Hansen | Norway |
| 52 | Emma | Jones | United Kingdom |
| 53 | Phil | Hughes | United Kingdom |
Invoice table
| InvoiceId | CustomerId | Total |
|---|---|---|
| 1 | 2 | 1.98 |
| 2 | 4 | 3.96 |
| 3 | 8 | 5.94 |
| 140 | 52 | 23.76 |
| 369 | 52 | 13.86 |
| 283 | 53 | 28.71 |
| 109 | 53 | 8.91 |
I have to write a query that returns the country along with the top customer and how much they spent. For countries where the top amount spent is shared, provide all customers who spent this amount.
I wrote a query like:
SELECT c.CustomerId, c.FirstName, c.LastName, c.Country, SUM(i.Total) AS TotalSpent
FROM Customer c
JOIN Invoice i
ON c.CustomerId = i.CustomerId
GROUP BY c.FirstName, c.LastName
HAVING i.Total >= MAX(i.Total)
ORDER BY c.Country;
the query is not finding the maximum values but it is returning all available values. I am not sure about which DBMS is used as it is my first steps in SQL coding and above example is from Udacity learning platform lab (Maybe it is SQLite that they are using in the lab)
Any help is appreciated. Thank you!