sql - 分区而不重新排序数据
问题描述
我目前的数据如下:
我希望数据是
当我使用 row_number 函数时,它会重新排序并给我错误的 row_number,如下所示
如果我们看到“调整后的转换成本”值 0.160 出现在结果的顶部并且编号为 1,根据第一个屏幕截图这是错误的,它应该编号为 3
谢谢
解决方案
MYSQL 使用变量
结果 - http://www.sqlfiddle.com/#!9/406f64/8/0
select
colo1,f7,
if(colo1='Total Adj. Conversion Spend',@initVal:=@initVal+1,1) as RowNumber
from temp,(select @initVal:=0) vars
MS-SQL 使用 Rank 和 Row Number
我使用 Row_Number() 来保留顺序,然后在 case 语句中使用 Rank()
http://www.sqlfiddle.com/#!18/fde9f/15/0
select subquery_1.colo1,subquery_1.f7
,case when subquery_1.colo1='Total Adj. Conversion Spend' then
rank() over (partition by colo1 order by rownum) else 1 end as rnk
from
(select *,row_number() OVER (ORDER BY (Select 0)) as rownum from temp) as subquery_1
order by subquery_1.rownum
推荐阅读
- javascript - 如何控制 window.onscroll 的“this”
- python - 如何嵌套 numpy() 的 np.where,或者一个接一个?
- r - 在 r 中查找满足条件的上一个日期
- node.js - Passport facebook 登录:facebook 无法打开,isAuthenticated() false
- javascript - 迭代对象中的所有属性,查找并替换
- python - 如何在 python 中集成 Wikidata 查询
- python - BUG:如何防止敌人的血条重置?
- android - 如何刷新 RecyclerView + PagedListAdapter 并滚动到顶部?
- batch-file - 如何使用批处理文件设置PATH然后正常输入命令?
- r - 有没有办法列出从重复过程中获得的结果?