SQL选择唯一的元素并在两个句点上进行比较
假设我们有一个如下所示的表: 我希望能够看到在周期1和周期2有多少URL记录 其中,第1期为日期>'2016-01-01'和日期<'2017-01-01' 第二阶段的日期为“2014-01-1”和“2015-01-01” 以下是我的期望: 我可以使用以下查询轻松地在一个时段内完成此操作:SQL选择唯一的元素并在两个句点上进行比较,sql,google-bigquery,Sql,Google Bigquery,假设我们有一个如下所示的表: 我希望能够看到在周期1和周期2有多少URL记录 其中,第1期为日期>'2016-01-01'和日期
SELECT URL, COUNT(URL) as Period1
FROM table WHERE date < '2017-01-01'
AND date > '2016-01-01' GROUP BY URL
但是如何用Period2添加第二列呢
任何想法都将不胜感激。对不起,我解释错了 只需更改下面查询中的日期,它就会计算每个时段的点击次数
SELECT [URL]
,SUM(CASE WHEN (date >= '12/22/2015' And date <='12/23/2015') THEN 1 Else 0 END)
,SUM(CASE WHEN (date > '12/30/2015' And date < '12/31/2015') THEN 1 Else 0 END)
FROM LogFilesv2_Dataset.DE_Visits
Group by URL
不确定您正在使用哪个数据库。但对于Oracle数据库,您可以尝试使用这样的标量子查询
select url,(select count(*) from test where url=t.url and date_col <= sysdate and date_col > sysdate-20) period1,(select count(*) from test where url=t.url and date_col <= sysdate and date_col > sysdate-40) period2
通过url从测试t组
您可以在上面的查询中适当地替换日期范围
提供SQL脚本来创建表和填充数据总是很有帮助的。对于BigQuery标准SQL 标准SQL 选择 URL作为uri, 国家日期介于“2016-01-01”和“2016-12-31”之间,作为周期1, 国家日期介于“2014-01-01”和“2014-12-31”之间,作为周期2 从“LogFilesv2\u数据集.DE\u访问” 按URL分组
我真的很好奇——为什么要投票给错误的答案!?最近这类案件太多了!:oMy,bad,实际上是SUM,而不是count。据我所知,这个答案编辑过的版本也返回了正确的输出。非常感谢你,拉斐尔,我真的很感谢你的努力!