SQL选择唯一的元素并在两个句点上进行比较

SQL选择唯一的元素并在两个句点上进行比较,sql,google-bigquery,Sql,Google Bigquery,假设我们有一个如下所示的表: 我希望能够看到在周期1和周期2有多少URL记录 其中,第1期为日期>'2016-01-01'和日期

假设我们有一个如下所示的表:

我希望能够看到在周期1和周期2有多少URL记录

其中,第1期为日期>'2016-01-01'和日期<'2017-01-01'

第二阶段的日期为“2014-01-1”和“2015-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。据我所知,这个答案编辑过的版本也返回了正确的输出。非常感谢你,拉斐尔,我真的很感谢你的努力!