mysql - 根据mysql中的用户ID获取购买号
问题描述
我正在尝试获取第四列,在其中获取该用户的购买编号,我有以下数据:
user date purchase_id
a 01-01-2018 1
b 02-01-2018 2
a 02-01-2018 3
a 03-01-2018 4
b 04-01-2018 5
a 04-01-2018 6
并想得到这样的东西:
user date purchase_id purchase_order
a 01-01-2018 1 1
b 02-01-2018 2 1
a 02-01-2018 3 2
a 03-01-2018 4 3
b 04-01-2018 5 2
a 04-01-2018 6 4
这样做的最终用途是建立一个群组分析来检查用户保留率。谢谢
解决方案
您似乎正在寻找ROW_NUMBER()
(在 MySQL 8.0 中可用)。此窗口函数可用于对共享相同的组内的记录进行排名user
。
SELECT
user,
date,
purchase_id,
ROW_NUMBER() OVER(PARTITION BY user ORDER BY purchase_id ) purchase_order
FROM mytable
注意:目前还不清楚您要使用哪一列进行排序。它可能是purchase_id
(如上面的查询所示),或者可能date
是:您可以根据您的要求更改查询。
| user | date | purchase_id | purchase_order |
| ---- | ---------- | ----------- | -------------- |
| a | 2018-01-01 | 1 | 1 |
| a | 2018-01-02 | 3 | 2 |
| a | 2018-01-03 | 4 | 3 |
| a | 2018-01-04 | 6 | 4 |
| b | 2018-01-02 | 2 | 1 |
| b | 2018-01-04 | 5 | 2 |
推荐阅读
- java - 如何在java中解析没有库的HTML?
- python - Is there a way to combine a function that passes object information to a url and CreateView in Django?
- c++ - 是否可以将 shared_ptr 和 weak_ptr 存储在一个容器中?
- eclipse - 在 Eclipse 项目中组织非 Maven 源代码
- c++ - 无法在 geany 上运行代码。无法执行构建命令
- java - 如何为子类创建构造函数
- kotlin - 使用 viewPager 在片段中调用函数
- geotools - 使用平滑()时的 Geotools MismatchedDimensionException
- javascript - 快递和本地护照中的 req.isAuthenticated() 返回 false
- reactjs - 为什么我的本地字体没有与 Emotion 全局样式一起应用?