“写一个查询来确定花费最多的客户 每个国家的音乐。编写查询以返回国家/地区 与最高客户,以及他们花了多少钱。对于那些 最高消费金额是共享的,向所有花费此金额的客户提供 数量。
您只需要使用“客户”和“发票”表即可。
检查您的解决方案
尽管只有24个国家/地区,但您的查询应返回25行 因为英国有2个共享最多的客户。”
您可以在此处找到数据集
。
这是我尝试使用结果的代码
这是预期的结果
答案 0 :(得分:0)
通常,您应始终GROUP BY
SELECT
中不是聚合函数的任何内容(例如SUM
)。试试这个:
SELECT c.CustomerId, c.FirstName, c.LastName, c.Country,
SUM(i.Total) AS TotalSpent
FROM Customer c
JOIN Invoice i
ON i.CustomerId = c.CustomerId
GROUP BY c.CustomerId, c.FirstName, c.LastName, c.Country
ORDER BY c.Country
答案 1 :(得分:0)
WITH tab1 AS ( SELECT c.CustomerId, c.FirstName, c.LastName, c.Country, SUM(i.Total) TotalSpent FROM Customer c JOIN Invoice i ON c.CustomerId = i.CustomerId GROUP BY c.CustomerId ) SELECT tab1.* FROM tab1 left JOIN ( SELECT CustomerId, FirstName, LastName, Country, MAX(TotalSpent) AS TotalSpent FROM tab1 GROUP BY Country ) tab2 ON tab1.Country = tab2.Country WHERE tab1.TotalSpent = tab2.TotalSpent ORDER BY Country;