因此,基本上,我想在"2018-09-07" and "2018-09-13"
之间累积DATE的EST_VIEWS的总和。我该怎么办?
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
答案 0 :(得分:1)
由于您要查看给定范围内的所有日期,即使您的源表可能没有这些日期的任何条目,在这种情况下,我们也可以使用日历表。鉴于您希望的范围很小,以下内容就足够了:
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;
请注意,如果需要更大范围的日期,则可能需要一种更清洁,更自动化的生成日历表的方式。 See this SO question中的某些选项。
答案 1 :(得分:0)
我想我知道,您想知道VIDEO_ID在'2018-09-07'和'2018-09-13'之间的观看次数,如果我错了,请纠正我。因此,如果VIDEO_ID在2018-09-07一次被看到,在2018-09-08两次被看到,而在本周的剩余时间内没有被看到,那么您希望得到的总和是3。
您应该使用where子句:
SELECT
VIDEO_ID,
SUM(EST_VIEWS)
WHERE
DATE(DATE)
BETWEEN
DATE('2018-09-07') AND DATE('2018-09-13')
GROUP BY
VIDEO_ID