2

我已经搜索了所有 SQL 问题,并且找到了我不想要的每个版本 - 所以我需要问。我处于大脑锁定状态 - 知道有一个计数、总和、组和连接都放在一起。

2 表

  1. CustomerTable - CustID、CustQuality(值是好客户、坏客户、新客户等)
  2. PurchaseTable(PurchID、PurchItem、PurchDate)

我试图计算过去 30 天内好、坏、新客户的购买量。

我已经尝试了加入和组计数等,我不断得到:

  • GoodCustomer - CustID2 - 1 次购买
  • GoodCustomer - CustID3 - 3 购买
  • GoodCustomer - CustID4 - 2 购买
  • BadCustomer - CustID7 - 2 购买
  • BadCustomer - CustID1 - 4 购买
  • 新客户 - CustID9 - 1 次购买
  • NewCustomer - CustID4 - 4 purch 等

我只想要整体结果

  • 3 位好客户进行了 6 次购买
  • 2 位不良客户进行了 6 次购买
  • 2 位新客户完成 5 次购买

那么对于额外的功能......我还有一个我需要加入的第三张桌子。CustomerLocation(CLID、CLLocation(North、South、East、West 的值))

因此,如果我想知道以下组的细分

  • 3 位好客户进行了 6 次购买 - 1 位客户来自北方,2 位客户来自南方
  • 2 位不良客户进行了 6 次购买 - 5 位来自东方的客户,1 位来自西方的客户
  • 2 位新客户购买了 5 次 - 2 位来自南方的客户

最后一个新查询将是... WHERE CLLocation = South

或者,如果我想按地区查找...

  • 1 好客户进行了 3 次购买
  • 2 坏客户进行了 2 次购买
  • 0 新客户进行了 0 购买

我知道我问了很多 - 但任何和所有的帮助都将不胜感激!

4

2 回答 2

0

这应该回答你的第一个问题

SELECT COUNT(DISTINCT c.CustID), CustQuality, COUNT(PurchID) FROM CustomerTable c
INNER JOIN PurchaseTable p ON c.CustID = p.CustID
GROUP BY CustQuality
于 2012-11-04T20:02:20.400 回答
0
SELECT C.CustQuality, COUNT(DISTINCT c.CustID) AS tot_Customer, COUNT(PurchID) AS tot_Purch
FROM CustomerTable C, PurchaseTable P
WHERE C.CustID = P.PurchCustID
GROUP BY C.CustQuality;

SELECT C.CustQuality, CL.CLocation,  COUNT(DISTINCT c.CustID) AS tot_Customer, COUNT(PurchID) AS tot_Purch
FROM CustomerTable AS C, PurchaseTable AS P, CustomerLocation AS CL
WHERE C.CustID = P.PurchCustID AND CL.LCTCustID = C.CustID
GROUP BY C.CustQuality, CL.CLocation;

SELECT C.CustQuality, CL.CLocation,  COUNT(DISTINCT c.CustID) AS tot_Customer, COUNT(PurchID) AS tot_Purch
FROM CustomerTable AS C, PurchaseTable AS P, CustomerLocation AS CL
WHERE C.CustID = P.PurchCustID AND CL.LCTCustID = C.CustID AND CL.CLocation='North'
GROUP BY C.CustQuality;
于 2012-11-04T20:18:12.820 回答