【发布时间】:2020-07-19 21:16:28
【问题描述】:
我有一个名为 transactions 的 mysql 表,如下所示:
|---------|--------------|--------------|--------------------------|
|order_id |customer_name | brand_name | order_time_stamp |
|---------|--------------|--------------|--------------------------|
| 1 | Jack | Pepsi | 2019-02-23 20:02:21.550. |
|---------|--------------|--------------|--------------------------|
| 2 | Dorothy | Fanta | 2019-02-23 20:03:21.550. |
|---------|--------------|--------------|--------------------------|
| 3 | Dorothy | Fanta | 2019-02-23 20:04:21.550. |
|---------|--------------|--------------|--------------------------|
| 4 | Jack | Fanta | 2019-02-23 20:05:21.550. |
|---------|--------------|--------------|--------------------------|
很明显,这是一个以 order_id 作为主键的表,它捕获在线商店的每个订单。我试图捕捉的是按品牌名称分组的额外订单数量,如下所示:
enter code here
|------------|--------------------|
| brand_name | additional orders |
|------------|--------------------|
| Pepsi | 0 |
|------------|--------------------|
| Fanta | 1 |
|------------|--------------------|
但是,附加订单是在客户级别定义的,并且定义为客户第一次订购后所有订单的总和。
我的策略是使用 rank() 函数,如下所示:
select rank() over( partition by customer_name order by order_time_stamp) as rank
from transactions
这会创建一个额外的列,为每个客户创建一个排名。但是,我不确定现在如何将其分组到品牌级别并获得我所展示的输出
【问题讨论】:
-
为什么不是《芬达》2呢?杰克和多萝西都有芬达的第二笔订单。
-
额外的订单数量是品牌级别的..当杰克订购芬达时,这是第一次发生。
-
你们需要组队。