Google bigquery BIGQUERY-如何按特定日期使用求和函数?

Google bigquery BIGQUERY-如何按特定日期使用求和函数?,google-bigquery,Google Bigquery,因此,基本上,我想计算EST_浏览量的总和(按日期),它是在“2018-09-07”和“2018-09-13”之间累积的。我怎么做 Row CMS_ID VIDEO_ID CHANNEL_ID TITLE EST_VIEWS DATE 1 2 WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ Con Két Quậy 1 2018-09-10 2 2 WKqQSws7CRM UC-CcF1XGCRASDRr

因此,基本上,我想计算EST_浏览量的总和(按日期),它是在
“2018-09-07”和“2018-09-13”之间累积的。我怎么做

Row CMS_ID  VIDEO_ID    CHANNEL_ID  TITLE   EST_VIEWS   DATE     
1   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    1   2018-09-10   
2   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    3   2018-09-07   
3   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    1   2018-09-09   
4   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    3   2018-09-11   
5   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    2   2018-09-13   
6   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    1   2018-09-12   
7   2   V133h8Rn8W0 UC-CcF1XGCRASDRrEOI_zEnQ    Michael Jackson Nhí - Châu Phát Luân Ngôi Sao Nhí Trại Hè Trường Anh Ngữ RES 2018   1   2018-09-11   
8   2   V133h8Rn8W0 UC-CcF1XGCRASDRrEOI_zEnQ    Michael Jackson Nhí - Châu Phát Luân Ngôi Sao Nhí Trại Hè Trường Anh Ngữ RES 2018   1   2018-09-12   
结果是:

Row CMS_ID  VIDEO_ID    CHANNEL_ID  TITLE   DATE    total    
1   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    2018-09-10  1    
2   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    2018-09-11  3    
3   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    2018-09-07  3    
4   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    2018-09-09  1    
5   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    2018-09-12  1    
6   2   WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ    Con Két Quậy    2018-09-13  2    

由于您希望查看给定范围内的所有日期,即使源表中可能没有这些日期的任何条目,在这种情况下,我们也可以使用日历表。鉴于您所需的范围较小,以下内容应足够:

WITH dates AS (
    SELECT DATE("2018-09-07") AS DATE UNION ALL
    SELECT DATE("2018-09-08") UNION ALL
    SELECT DATE("2018-09-09") UNION ALL
    SELECT DATE("2018-09-10") UNION ALL
    SELECT DATE("2018-09-11") UNION ALL
    SELECT DATE("2018-09-12") UNION ALL
    SELECT DATE("2018-09-13")
)

SELECT
    t1.DATE,
    SUM(t2.EST_VIEWS) OVER (ORDER BY t1.DATE) AS total
FROM dates t1
LEFT JOIN yourTable t2
    ON t1.DATE = t2.DATE
GROUP BY
    t1.DATE;

请注意,如果您需要更大范围的日期,那么您可能需要一种更干净、更自动化的方式来生成日历表。关于一些选项。

我想我理解,您想知道一个视频ID在“2018-09-07”和“2018-09-13”之间的浏览量,如果我错了,请纠正我。因此,如果一个视频ID在2018-09-07和2018-09-08分别被观看了一次和两次,并且在本周的剩余时间内没有被观看,那么你想要得到的总数是3

你应该使用一个子句:


我试过你的方法。但是我仍然没有得到预期的结果
行CMS\u ID VIDEO\u ID CHANNEL\u ID TITLE DATE总计12 WKqQSws7CRM UC-CCF1XGCRASDREOI\u zEnQ Con Két Quậy 2018-09-10 12 WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ Con Két区ậy 2018-09-11 3 2 WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ Con Két区ậy 2018-09-07 3 4 2 WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ Con Két区ậy 2018-09-09 15 2 WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ Con Két区ậy 2018-09-12 16 2 WKqQSws7CRM UC-CcF1XGCRASDRrEOI_zEnQ Con Két区ậy 2018-09-13 2
这里很难看到,我会把结果放在帖子上。你想报告所有的日期,甚至那些没有出现在你的表格中的日期吗?是的,我想报告所有的日期,我的意思是我想有一个表格,它是根据每个视频ID计算的
总和
EST_视图(在'2018-09-07'和'2018-09-13'之间累积)@PhucTrinh我更新了我的答案以使用日历表。
SELECT 
   VIDEO_ID,
   SUM(EST_VIEWS)
WHERE
   DATE(DATE)
BETWEEN 
   DATE('2018-09-07') AND DATE('2018-09-13')
GROUP BY
   VIDEO_ID