需求:
统计每一个用户在入驻7天内所做的工作数量总和及金额总和。1、入驻时间不一样,每天都有用户入驻
2、revenue、quantity属于累计指标,都会包含前一天的数量time_ru(入驻时间) time_gz(工作日期) userid(用户ID) revenue(累计收入金额) quantity(累计工作数量)
20191001 20191001 aaa 1 1
20191001 20191002 aaa 4 3
20191001 20191003 aaa 9 8
20191001 20191004 aaa 12 12
20191001 20191005 aaa 18 17
20191001 20191006 aaa 25 20
20191001 20191007 aaa 30 22
20191024 20191024 bbb 5 2
20191024 20191025 bbb 6 8
20191024 20191026 bbb 12 10
20191024 20191027 bbb 18 14
20191024 20191028 bbb 22 19
20191024 20191029 bbb 28 22
20191024 20191030 bbb 35 26
我这样写,但是一直提示报错“ODPS-0130071:[4,37] Semantic analysis exception - function or view 'time_ru' cannot be resolved
”select   userid
            ,count(distinct revenue)
            ,count(distinct quantity)
            ,count(distinct dateadd(time_ru(time_ru,'yyyymmdd'),+7,'dd'))
from    a表
            where   ds>='20191001' and ds<='20191030'            
group by  userid请教各位大佬,怎么样筛选日期函数~被折腾的要疯了

解决方案 »

  1.   

    对的,所以一直再筛选。获取“time_ru”+7,理论上是对的,但是还是不行
      

  2.   

    revenue、quantity属于累计指标,都会包含前一天的数量
    那就不用累计了,直接读取就行了吧--测试数据
    if not object_id(N'Tempdb..#T') is null
    drop table #T
    Go
    Create table #T([time_ru] Date,[time_gz] Date,[userid] nvarchar(23),[revenue] int,[quantity] int)
    Insert #T
    select '20191001','20191001',N'aaa',1,1 union all
    select '20191001','20191002',N'aaa',4,3 union all
    select '20191001','20191003',N'aaa',9,8 union all
    select '20191001','20191004',N'aaa',12,12 union all
    select '20191001','20191005',N'aaa',18,17 union all
    select '20191001','20191006',N'aaa',25,20 union all
    select '20191001','20191007',N'aaa',30,22 union all
    select '20191024','20191024',N'bbb',5,2 union all
    select '20191024','20191025',N'bbb',6,8 union all
    select '20191024','20191026',N'bbb',12,10 union all
    select '20191024','20191027',N'bbb',18,14 union all
    select '20191024','20191028',N'bbb',22,19 union all
    select '20191024','20191029',N'bbb',28,22 union all
    select '20191024','20191030',N'bbb',35,26
    Go
    --测试数据结束
    Select * from #T WHERE time_gz=DATEADD(DAY,6,time_ru)
      

  3.   

    ——————
    感谢,如果time_ru的格式是2019/10/15  18:28:01 这样子的,是否要加一个格式定义。Select * from #T WHERE time_gz=DATEADD((time_ru,'yyyy/mm/dd hh:mm:ss '),6,time_ru)
      

  4.   

    把格式转换一下转成date
    Select * from #T WHERE time_gz=DATEADD(DAY,6,CONVERT(DATE,time_ru))