sql - Presto 自连接匹配日期列
问题描述
我试图弄清楚为什么 presto 返回以下结果。
我有以下 4 个日期的表格:
pickup_week (date)
'2019-10-28'
'2019-11-04'
'2019-11-06'
'2019-12-16'
当我尝试这个简单的自我加入时:
select
w1.pickup_week as pu_w1,
w2.pickup_week as pu_w2
from week_user_list w1
join week_user_list w2 on w1.pickup_week = w2.pickup_week + interval '7' day
order by w1.pickup_week
我得到以下结果:
w1.pickup_week w2.pickup_week
2019-11-04 2019-10-28
2019-11-11 2019-11-04
如您所见,连接条件如下:
w1.pickup_week = w2.pickup_week + interval '7' day
但是我在返回表中看到的是相反的,w2.pickup_week 是前一周,而不是条件中所述的后一周。
在这种情况下,我想要的输出是:
w1.pickup_week w2.pickup_week
2019-10-28 2019-11-04
2019-11-04 2019-11-11
我了解将条件恢复为
w1.pickup_week = w2.pickup_week - interval '7' day
会提供所需的输出,但我很困惑为什么以及为什么会返回这些类型的结果,条件陈述对我来说似乎不直观。
这里发生了什么,思考这个问题的正确方法是什么?
谢谢!
解决方案
你只是把逻辑倒过来了。使用-
:
select w1.pickup_week as pu_w1, w2.pickup_week as pu_w2
from week_user_list w1 join
week_user_list w2
on w1.pickup_week = w2.pickup_week - interval '7' day
order by w1.pickup_week;
这清楚地表明该w1
值比该值早一周w2
。我认为您在这里对日期/时间的顺序和日期算术有一点困惑。
推荐阅读
- angular - 添加接口获取请求
- android - Android Studio 3.5.3 中是否存在“微调器”和“expandableListView”项目
- python - Python 在大约一天后失去与 MySQL 数据库的连接
- javascript - 变量的引用
- javascript - 如何将 onClick 函数添加到动态填充的 div?
- firebase - firebase 客户端为 firebase 功能上传哪些文件?
- sql-server - 如果整列的总和为零,则更改 SQL Server 中每一行的值
- tensorflow - InputList 的 TensorFlow 占位符
- python - 如何在 Python 中排除搜索结果
- unicode - 当文件夹包含 Windows 中的表意空格“\u3000”时,从 gsutil 管理文件时出错?