【发布时间】:2021-03-28 00:53:33
【问题描述】:
我有一张包含以下详细信息的表格
| Customer | Deal | DealStage |
|---|---|---|
| A | D1 | Lost |
| A | D2 | Won |
| A | D3 | Contacted |
| B | D4 | Conatcted |
| B | D5 | Lost |
| C | D6 | Lost |
| D | D7 | Lost |
我必须开发一个查询,以便为每个客户获取唯一的最高阶段。阶段优先级为赢 > 联系 > 输。例如,A 有三笔交易,分别是赢、输和已联系。所以我应该考虑赢。同样联系了 B 和丢失了 C 和 D
是否有可能得到类似的输出
| Customer | Highets Stage |
|---|---|
| A | Won |
| B | Contacted |
| C | Lost |
| D | Lost |
这样,我可以生成一个看起来像这样的数据透视表
| Stage | CustomerCount |
|---|---|
| Won | 1 |
| Contacted | 1 |
| Lost | 2 |
提前致谢
【问题讨论】:
-
是的,当然这是可能的。它被称为聚合。不过,我要做的第一件事是更改数据模型。为交易阶段添加一个表格。这有两个优点:(1) 没有拼写错误('Conatcted' vs. 'Contacted'),(2) 您可以添加排名列,以便 DBMS 知道哪个阶段排名高于另一个。
-
@Strawberry 实际上,我在几秒钟内就完全清楚了这个问题。下面非常快速(且正确)的 2 个答案似乎也证实了这一点。
标签: mysql sql count aggregate-functions