mysql - 根据购买次数对客户进行分类,找出谁属于哪个范围?
问题描述
我有一张桌子叫:purchases
id |id_customer|id_product|date_of_purchase
1 1 1 2019-03-04
2 2 2 2019-02-05
3 3 3 2019-01-03
4 4 4 2019-01-10
5 5 5 2019-01-02
6 1 1 2019-03-05
7 1 3 2019-03-23
8 1 4 2019-03-23
9 1 3 2019-03-12
10 2 3 2019-03-23
11 2 1 2019-03-11
这是我尝试过的代码:
SELECT id_customer , count(id_customer) as times_bought,
CASE
WHEN times_bought < 2 THEN "rare"
WHEN times_bought >1 and times_bought < 4 THEN "neutral"
ELSE "frequent"
END
FROM purchases;
除了脚本可能有很多问题之外,它给出的 times_bought 并不是一个已知的列。你有什么建议?
解决方案
您在语句中缺少group by
并检查count()
而不是times_bought
(这是不允许的)CASE
:
SELECT id_customer, count(date_of_purchase) as times_bought,
CASE count(date_of_purchase)
WHEN 1 THEN 'rare'
WHEN 2 THEN 'neutral'
WHEN 3 THEN 'neutral'
ELSE 'frequent'
END customerclass
FROM purchases
GROUP BY id_customer
请参阅演示。
结果:
| id_customer | times_bought | customerclass |
| ----------- | ------------ | ------------- |
| 1 | 5 | frequent |
| 2 | 3 | neutral |
| 3 | 1 | rare |
| 4 | 1 | rare |
| 5 | 1 | rare |
推荐阅读
- ios - `iOS 13.1.3 update` - 启动屏幕后立即黑屏
- r - ggplot2 annotation_ticks 在绘图区域的外部
- android - Android:仅从左侧模糊图像
- python - python中导入目录文件的机制
- android - 从 SQLite 迁移到 Room:迁移没有正确处理表
- raspberry-pi3 - 树莓派 pi3 无法在主 HDMI 显示器上启动应用程序,可以使用 ssh -x 在远程启动
- msbuild - 无法通过构建定义检测错误
- python - Matplotlib:空白图和窗口不会关闭
- orm - 阿多尼斯`belongsToMany`关系不起作用
- snakemake - 在继续执行下一个规则之前,如何让 Snakemake 将所有样本应用于单个规则?