按日期加入查询

Posted

技术标签:

【中文标题】按日期加入查询【英文标题】:join query by date 【发布时间】:2016-09-11 12:55:26 【问题描述】:

请有人可以帮助我。

我需要加入这两个查询并按小时分组。查询结果可以有很多天。

结果:Query1

SELECT DATE_FORMAT( Venta.fechaImpresion,  "%h" ) AS fechaImpresion2, COUNT( * ) AS total
FROM  `Venta` 
WHERE Venta.fechaImpresion LIKE  "2016-05-02 %"
GROUP BY HOUR( Venta.fechaImpresion ) , DAY( Venta.fechaImpresion ) 
LIMIT 0 , 30

结果:Query2

SELECT DATE_FORMAT(Venta.fechaImpresion,"%h") as fechaImpresion FROM `Venta`
where Venta.fechaImpresion >= "2016-05-02" and Venta.fechaImpresion <= "2016-05-09"  
 GROUP BY hour( Venta.fechaImpresion) 

如果我尝试加入一个查询,结果为零。

SELECT DATE_FORMAT( Venta.fechaImpresion,  "%h" ) AS fecha, dia1.total AS total1
FROM  `Venta` 
LEFT JOIN (

SELECT DATE_FORMAT( Venta.fechaImpresion,  "%h" ) AS fechaImpresion
FROM  `Venta` 
WHERE Venta.fechaImpresion >=  "2016-05-02"
AND Venta.fechaImpresion <=  "2016-05-09"
GROUP BY HOUR( Venta.fechaImpresion )
)fecha ON fecha.fechaImpresion = Venta.fechaImpresion
LEFT JOIN (

SELECT DATE_FORMAT( Venta.fechaImpresion,  "%h" ) AS fechaImpresion2, COUNT( * ) AS total
FROM  `Venta` 
WHERE Venta.fechaImpresion LIKE  "2016-05-02 %"
GROUP BY HOUR( Venta.fechaImpresion ) , DAY( Venta.fechaImpresion )
)dia1 ON ( dia1.fechaImpresion2 = fecha.fechaImpresion ) 
WHERE Venta.fechaImpresion >=  "2016-05-02"
AND Venta.fechaImpresion <=  "2016-05-09"
GROUP BY HOUR( Venta.fechaImpresion ) 

【问题讨论】:

你想按小时加入,即使他们来自不同的日子? 不,从同一天开始 您可能想考虑使用 EXTRACT(DAY_HOUR FROM fechaImpresion) 进行您的 JOIN 等操作。 @Nicarus 非常感谢!!提取是工作。问候 很高兴你能成功。也许您可以发布您的解决方案并接受它以供其他人参考。 【参考方案1】:

你可以这样试试

选择 b.second 表列,a.* 从第一个表,b 第二个表,其中 a.date 列 = b.date 列

【讨论】:

【参考方案2】:

我建议为表格使用两个单独的句柄。像这样的:

SELECT DATE_FORMAT( v1.fechaImpresion,  "%h" ) AS fechaImpresion2, COUNT( v1.* ) AS total, DATE_FORMAT(v2.fechaImpresion,"%h") as fechaImpresion
FROM  `Venta` v1, 'Venta' v2 where v1.fechaImpresion = v2.fechaImpresion 

然后,您可以根据需要应用各种日期标准。

【讨论】:

以上是关于按日期加入查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Hive SQL 中按日期范围独家加入?

按日期排序对象列表,其中对象没有名称

如何加入表格并按最大日期选择 [重复]

在 Python 中按共同日期加入时间序列(数据框和系列/列表问题)

如何在日期列上查询 2 个表,如果不存在匹配的日期,那么我们必须加入下一个最大日期

按最近日期加入 BigQuery 中具有重复记录的表