使用 "using" 而不是 "on" 交叉连接两个表
Cross joining two tables with "using" instead of "on"
我在一本书中发现了一个我无法理解的 SQL 查询。据我了解,有两个 tables - 日期有一个 date_id 和 test_Date 列,第二个 table 有 date_id 和 obs_cnt .
select t1.test_date
,sum(t2.obs_cnt)
from date t1
cross join
(transactions join date using (date_id)) as t2
where t1.test_date>=t2.test_date
group by t1.test_date
order by t1.test_date
谁能帮我理解这段代码的作用或输出的样子。
我了解 obs_cnt 变量在 test_date 级别聚合。
我了解 using
在 on
上的使用。但是我不明白日期 table 是如何被引用两次的,这是否意味着它被加入了两次?
But what i dont get is how the date table is being reference twice, does it mean it is being joined twice?
是的,尽管将 t2 视为一个整体而不是日期的函数可能更容易 table:t2 是交易 table,但实际日期表示为test_date 而不是 ID。
我假设书中的所有内容实际上都有一些上下文,但看起来这会产生:
- 日期 table (t1) 的每一行输出一行,顺序为 test_date
- 对于每一行,使用我们的 transactions-with-date table t2.
计算在该日期或之前发生的所有交易的观察次数总和
I understand obs_cnt variable is being aggregated at a test_date level.
它正在针对 t1 test_date 进行聚合,这是我们用于select t2 中求和的行的约束。
我在一本书中发现了一个我无法理解的 SQL 查询。据我了解,有两个 tables - 日期有一个 date_id 和 test_Date 列,第二个 table 有 date_id 和 obs_cnt .
select t1.test_date
,sum(t2.obs_cnt)
from date t1
cross join
(transactions join date using (date_id)) as t2
where t1.test_date>=t2.test_date
group by t1.test_date
order by t1.test_date
谁能帮我理解这段代码的作用或输出的样子。
我了解 obs_cnt 变量在 test_date 级别聚合。
我了解 using
在 on
上的使用。但是我不明白日期 table 是如何被引用两次的,这是否意味着它被加入了两次?
But what i dont get is how the date table is being reference twice, does it mean it is being joined twice?
是的,尽管将 t2 视为一个整体而不是日期的函数可能更容易 table:t2 是交易 table,但实际日期表示为test_date 而不是 ID。
我假设书中的所有内容实际上都有一些上下文,但看起来这会产生:
- 日期 table (t1) 的每一行输出一行,顺序为 test_date
- 对于每一行,使用我们的 transactions-with-date table t2. 计算在该日期或之前发生的所有交易的观察次数总和
I understand obs_cnt variable is being aggregated at a test_date level.
它正在针对 t1 test_date 进行聚合,这是我们用于select t2 中求和的行的约束。