在项目中看到设计人员提供了一个sql问,使用了row_number()和over()函数。我连MySQL都弄不太明白,就给我上这个难度的有点太坑了。
我把问题这个函数的替换记录一下,不知道有没有人用得上。
需求
这个原始表经过标题上的函数一处理,就能够根据uid和JAN进行分组,在每个小组生成一个rownum。说起来挺麻烦,实际上dba就写了这个代码
select
JAN,
uid,
trade_date,
row_number() over ( partition by uid,JAN order by trade_date ) as no
from base
他可能是SqlServer,效果应该就是这样
MySQL改造
1,准备数据
DROP TABLE IF EXISTS `base`;
CREATE TABLE `base` (
`trade_date` varchar(255) DEFAULT NULL,
`uid` varchar(255) DEFAULT NULL,
`oid` text,
`product_name` varchar(255) DEFAULT NULL,
`product_kind` text,
`JAN` varchar(255)