我在表格(各種文章的綜合瀏覽量)中列出了一系列包含網址和時間戳列的行,我希望在N天內看到每篇文章的綜合瀏覽量其首頁瀏覽量。第一次出現N天內計數事件
我可以使用「GROUP BY url」來查看每篇文章的總瀏覽量,並且我可以使用WHERE子句僅計算特定硬編碼日期範圍內的瀏覽量,但我需要自定義該日期範圍每個唯一的網址。我相信我可以使用MIN()來查找每個URL的第一次出現,但我需要以某種方式將這些MIN()值與WHERE子句一起使用。我想我需要使用JOIN,但我似乎無法弄清楚這種語法。非常感謝!
我在表格(各種文章的綜合瀏覽量)中列出了一系列包含網址和時間戳列的行,我希望在N天內看到每篇文章的綜合瀏覽量其首頁瀏覽量。第一次出現N天內計數事件
我可以使用「GROUP BY url」來查看每篇文章的總瀏覽量,並且我可以使用WHERE子句僅計算特定硬編碼日期範圍內的瀏覽量,但我需要自定義該日期範圍每個唯一的網址。我相信我可以使用MIN()來查找每個URL的第一次出現,但我需要以某種方式將這些MIN()值與WHERE子句一起使用。我想我需要使用JOIN,但我似乎無法弄清楚這種語法。非常感謝!
這幾乎和你解釋過的一樣。
一個版本與JOIN
SELECT v.url, COUNT(*) views
FROM pageviews v JOIN (
SELECT url, MIN(viewed_at) first_viewed_at
FROM pageviews
GROUP BY url
) f
ON v.url = f.url
WHERE v.viewed_at < f.first_viewed_at + INTERVAL 3 DAY
GROUP BY v.url;
與相關子查詢
SELECT url, COUNT(*) views
FROM pageviews v
WHERE viewed_at < (
SELECT MIN(viewed_at)
FROM pageviews
WHERE url = v.url
) + INTERVAL 3 DAY
GROUP BY v.url;
這裏的版本是一個dbfiddle演示
太好了,謝謝!我通過Redash查詢Redshift,並在「+ INTERVAL 3 DAY」中給出了語法錯誤。我嘗試了「+ 3」,似乎工作正常。 –
你應該首先提到紅移。 '+ 3'應該可以工作,或者你可以明確地使用'DATEADD(day,3,f.first_viewed_at)' – peterm
請分享'表structure',你必須查詢嘗試和預期的結果集。僅通過查看問題就可能無法構建高效的查詢。 –