【发布时间】:2020-06-22 07:30:21
【问题描述】:
任务:
如果用户有多个项目,则按以下顺序排列项目:1) 相册 2) 卡片 3) 任何其他项目类型
我尝试编写一个查询,该查询将为我对用户执行的订单类型进行排名。所以我需要为“相册”买 1 个,为“卡片”买 2 个,为他订购的其他东西买 3 个。
在我的 Excel 中,每个用户只有 1 个订单,这根本不是“相册”或“卡片”,因此应该为每个用户获取数字 3。
这是我尝试过的查询:
select f.USER_SK,
rank() over (partition by f.user_sk
order by case when d.PROJECT_TYPE='photobook' then 1 end,
case when d.PROJECT_TYPE='card' then 2 end,
case when d.project_type not in ('card','photobook') then 3 end
) as [rank]
from Project_f f inner join
project_d d
on f.PROJECT_SK=d.PROJECT_SK
我得到的结果是,每个用户都有 1 个,尽管他们都没有相册。
【问题讨论】:
-
样本数据和适当的数据库标签会有所帮助。
标签: sql rank partition case-when