Bigquery - alternative for cross join

萝らか妹 提交于 2020-01-05 04:24:05

问题


I have to have below columns in my output in addition to the ones that I have specified in the query
count of (nativeprodID) for each userID in last 7 days
count of (nativeProdID) for each userID in last 15 days
count of (nativeprodID) for each userID in last 30 days

SELECT userid, nativeprodID, nativeVersion, nativeVersionName,
MAX(StartTime) AS Last_Used_TimeStamp,
FROM
[ProdTable]
WHERE NativeProd ='AAA'
AND GlobalPod='AAA'
GROUP BY 1,2,3,4
LIMIT 10

I was thinking of using cross join but is there any other easier technique?


回答1:


Try below

SELECT 
  userid, 
  nativeprodID, 
  nativeVersion, 
  nativeVersionName, 
  MAX(StartTime) AS Last_Used_TimeStamp, 
  SUM(IF(DATE(StartTime) > DATE(DATE_ADD(CURRENT_DATE() , -7, "DAY")), 1, 0)) AS count_last_7_days, 
  SUM(IF(DATE(StartTime) > DATE(DATE_ADD(CURRENT_DATE() , -15, "DAY")), 1, 0)) AS count_last_15_days, 
  SUM(IF(DATE(StartTime) > DATE(DATE_ADD(CURRENT_DATE() , -30, "DAY")), 1, 0)) AS count_last_30_days, 
FROM [ProdTable] 
WHERE NativeProd ='AAA' AND GlobalPod='AAA' 
GROUP BY 1,2,3,4 
LIMIT 10 


来源:https://stackoverflow.com/questions/38778424/bigquery-alternative-for-cross-join

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!