如何根据 SQL 中的 MIN(DATE) 通过递增 id 创建新列
How create new col by increment it based on MIN(DATE) in SQL
我想根据日期创建新列。如果是 MIN(DATE) 那么 new_col = 0 else new_col = 1 or 2 or 3 etc.
所以我有这个 table :
customer_id
date
1
2020-01-01
2
2020-12-01
2
2020-03-02
3
2020-04-06
1
2020-07-06
1
2020-08-12
我想要这个输出:
customer_id
MIN(date)
date
new_col
1
2020-01-01
2020-01-01
0
2
2020-03-02
2020-12-01
0
2
2020-03-02
2020-03-02
1
3
2020-04-06
2020-04-06
0
1
2020-01-01
2020-07-06
1
1
2020-01-01
2020-08-12
2
所以我想将每个日期组的这个新列按 MIN(DATE) 递增 1。
预先感谢您的帮助
你可以使用window函数:
select * , row_number() over (partition by customer_id order by date) -1 new_col
from table
我想根据日期创建新列。如果是 MIN(DATE) 那么 new_col = 0 else new_col = 1 or 2 or 3 etc.
所以我有这个 table :
customer_id | date |
---|---|
1 | 2020-01-01 |
2 | 2020-12-01 |
2 | 2020-03-02 |
3 | 2020-04-06 |
1 | 2020-07-06 |
1 | 2020-08-12 |
我想要这个输出:
customer_id | MIN(date) | date | new_col |
---|---|---|---|
1 | 2020-01-01 | 2020-01-01 | 0 |
2 | 2020-03-02 | 2020-12-01 | 0 |
2 | 2020-03-02 | 2020-03-02 | 1 |
3 | 2020-04-06 | 2020-04-06 | 0 |
1 | 2020-01-01 | 2020-07-06 | 1 |
1 | 2020-01-01 | 2020-08-12 | 2 |
所以我想将每个日期组的这个新列按 MIN(DATE) 递增 1。
预先感谢您的帮助
你可以使用window函数:
select * , row_number() over (partition by customer_id order by date) -1 new_col
from table