我有一个如下所示的数据
+---------+-----------------+-----------+
| user_id | purchase_bucket | Frequency |
+---------+-----------------+-----------+
| 123 | 8 | 2 |
| 321 | unclassified | 1 |
| 124 | 4 | 3 |
| 124 | unclassified | 1 |
| 125 | unclassified | 3 |
| 125 | 4 | 3 |
| 125 | 2 | 1 |
| 126 | 4 | 8 |
| 126 | 2 | 8 |
+---------+-----------------+-----------+
它给出了用户被分类的购买桶的信息,以及分类的次数。
so用户 123
分类在 purchase_bucket
8两次( Frequency
= 2).
用户 321
在
unclassified purchase_bucket
一次( Frequency
= 1).
问题是什么时候 Frequency
对于一个用户有多个 purchase_bucket
它们的频率相同
例如:用户 125
有相同的 Frequency
为了 unclassified
以及 4
,他们都有 3
作为频率。
我期望的结果如下
+---------+-----------------+-----------+
| user_id | purchase bucket | Frequency |
+---------+-----------------+-----------+
| 123 | 8 | 2 |
| 321 | unclassified | 1 |
| 124 | 4 | 3 |
| 125 | 4 | 3 |
| 126 | 4 | 8 |
+---------+-----------------+-----------+
所以对于用户123、321和124来说没有问题。但对于用户125我想 4
而不是 unclassified
在 purchase_bucket
.
对于用户 126
我不在乎 4
或者 2
进了采购桶。
简而言之,我不想 unclassified
当有一个数字和 Frequency
在特定用户的购买桶中。
我试过了 row_number()
以消除重复,但无法得到预期的结果。
我的查询和结果
SELECT *
FROM (
SELECT *,
row_number() OVER(PARTITION BY user_id ORDER BY Frequency DESC) as Rn
FROM table1 ) T
WHERE T.Rn = 1
+---------+-----------------+-----------+----+
| user_id | purchase bucket | Frequency | Rn |
+---------+-----------------+-----------+----+
| 123 | 8 | 2 | 1 |
| 124 | 4 | 3 | 1 |
| 125 | unclassified | 3 | 1 |
| 126 | 4 | 8 | 1 |
| 321 | unclassified | 1 | 1 |
+---------+-----------------+-----------+----+
样品提琴
有人能帮我吗?
1条答案
按热度按时间cld4siwp1#
您可以将未分类添加到您的订单中。