Presto SQL使用ST_相交进行左连接,ST_交叉会产生意外的结果
抱歉,如果标题没有提供信息 使用AWS雅典娜 有两个表: 1.1事务表Presto SQL使用ST_相交进行左连接,ST_交叉会产生意外的结果,sql,presto,amazon-athena,Sql,Presto,Amazon Athena,抱歉,如果标题没有提供信息 使用AWS雅典娜 有两个表: 1.1事务表 location time status type .... deleted_at BLOB 2020-09-01 BLOB 2020-09-02 BLOB 2020-09-03 2.面积表 boundary created_at deleted_at POLYGON((...)) 2020-0
location time status type .... deleted_at
BLOB 2020-09-01
BLOB 2020-09-02
BLOB 2020-09-03
2.面积表
boundary created_at deleted_at
POLYGON((...)) 2020-09-01 null
POLYGON((...)) 2020-09-01 null
POLYGON((...)) 2020-09-01 2020-10-01
对于事务_表中的每一行,我希望添加适当的边界
select date(time) as dt
, count(time) As cnt
from transaction_table t
left join area_table a
on ST_intersects(boundary, ST_Point(ST_X(t.location), ST_Y(t.location)))
where t.status = 'complete'
and t.deleted_at is null
and t.time >= date('2020-09-01')
and a.deleted_at is null
group by date(withdraw_time);
问题是当我使用ST_相交或ST_包含每日cnt减少时,查询中没有左连接,这对我来说没有意义,因为左连接总是输出与左表相同或更大的行
左表和右表都没有空值,并且没有增加行数的多个联接(如果是这样,使用左联接的查询比不使用左联接的查询多行)
现在使用ST_Crosss修复了问题->输出相同的结果(带/不带左连接)。但我不确定为什么在上面的查询中行数会减少
编辑:ST_Cross似乎没有连接任何行,因此与查询时没有左连接的值相同。所以我的问题是,为什么使用左连接ST_相交或ST_包含时,每日cnt会减少?Mysql中的相同查询(ST_point->point)运行得非常好
来自和
- 点(lat,lng)给出零维的点对象
- ST_Point(lat,lng)是一种几何图形,是二维的
因此,我猜使用ST_相交(Geom,Geom)和ST_相交(Geom,Point)的效果不同,但这仍然不能解释在左连接上减少的每日cnt。雅典娜基于Presto 0.172-根据他们的发行说明,没有可用的地理空间功能:
一个要考虑的事实是<代码>参数的顺序:StPosit < /C> >代码> StPoT(经度,纬度)< /代码>,经度为第一个参数,纬度为第二个。 您还在where条件中引用左表和右表,这肯定会导致行数减少