【发布时间】:2013-12-03 12:07:39
【问题描述】:
我收到了一个面试问题,但我无法解决。我不在SQL领域,更多的是展示解决问题的能力而不是SQL能力。不过我还是想弄清楚!
它在 MS SQL 服务器中,但通用 SQL 答案是可以接受的。
我有 3 个表:Sales、Customers、Products 和表中的 NO NULL 值。
客户:Customer_ID、Customer_Name
产品:Product_ID、Product_Price
销售额:Customer_ID、Product_ID、Number_Purchased
他们希望我将支付最多的客户展示给支付最少的客户。
所以我需要将客户的客户 ID 链接到销售中的客户 ID,然后将销售额链接到产品价格并计算价格 * 购买数量并将其分配给正确的人。
我当时尝试过这样的事情:(显然是错误的)
SELECT Customers.Customer_ID, Customers.Customer_Name, SUM(Sales.Number_Purchased *Products.Product_Price) as Total
FROM (Customers
INNER JOIN Products
ON Customers.Customer_ID = Products.Customer_ID)
INNER JOIN Sales ON
Products.Product_ID = Sales.Product_ID
GROUP BY Customers.Customer_ID, Customers.Customer_Name
显然我不擅长 SQL,但如果有人能在正确的方向上推动我解决这个问题(第二次面试将在几个小时内完成!)我将不胜感激!我已经把自己打成结了。
【问题讨论】:
-
我了解这些客户互相卖东西。所以应该有另一个表或另一个字段来定义哪个产品属于哪个客户。有时他们会寻找问题而不是答案。
-
对不起,我应该假设公司正在销售。每个客户从一家公司购买不同的产品。他们不互相出售。我认为我的垃圾代码可能会造成混乱。这是公司数据库。他们想知道他们的哪个客户花的钱最多!不过,我今天会在第二次面试中问这个问题,因为这是一个聪明的问题,他们可能想把我赶走!
标签: sql sql-server