需求:
統計每一個用戶在入駐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
請教各位大佬,怎么樣篩選日期函式~被折騰的要瘋了
uj5u.com熱心網友回復:
獲取每個人入住的第七天資料就可以吧uj5u.com熱心網友回復:
對的,所以一直再篩選。獲取“time_ru”+7,理論上是對的,但是還是不行uj5u.com熱心網友回復:
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)
uj5u.com熱心網友回復:
——————
感謝,如果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)
uj5u.com熱心網友回復:
把格式轉換一下轉成dateSelect * from #T WHERE time_gz=DATEADD(DAY,6,CONVERT(DATE,time_ru))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/121362.html
標籤:基礎類
上一篇:測驗入門
下一篇:08資料庫安裝報錯
