【发布时间】:2022-01-19 16:58:25
【问题描述】:
我是 SQL 新手,来自 Python,很难理解 SQL 语法。我有一个名为“Purchases”的表,还有一个位于第一个表下方的名为“Customers”的表。
我想SELECT 购买最多 次的客户的姓氏(可以计入PurchaseID)。我已经弄清楚如何按姓氏汇总购买计数,但我不知道如何返回具有大多数 购买的单个客户LastName。最后,我不确定我是否以最直观的方式执行此操作?我很高兴收到反馈。
| PurchaseID | CustomerID |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 5 |
| 7 | 5 |
| 8 | 4 |
| 9 | 3 |
| 10 | 2 |
| LastName | CustomerID |
|---|---|
| Davis | 1 |
| Smith | 2 |
| Tran | 3 |
| Washington | 4 |
| Lopez | 5 |
SELECT t2.LastName, COUNT(t1.CustomerID) AS purchase_count
FROM Purchases t1
LEFT JOIN Customers t2 ON
t1.CustomerID = t2.CustomerID
GROUP BY t2.LastName
返回
| LastName | purchase_count |
|---|---|
| Davis | 1 |
| Smith | 2 |
| Lopez | 3 |
| Tran | 2 |
| Washington | 2 |
【问题讨论】:
-
如果不止一个人共享相同的计数,您期望什么?
-
ORDER BY purchase_count DESC LIMIT 1(并解决当用户购买最多时该怎么办)。 -
如果有两个客户三单怎么办?
-
谢谢,抱歉,我没明白您的意思 - 只有 CustomerID 5 有 3 次购买?
-
如果 Tran 也有 3 次购买怎么办?谁应该出现在结果中?