我在一本书中发现了我无法理解的SQL查询。据我了解,有两个表-date具有date_id和test_Date列,第二个表具有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
的用法。但是我没有得到的是日期表如何被引用两次,这是否意味着它被联接了两次?
答案 0 :(得分:2)
但是我没有得到的是日期表如何被引用两次,这是否意味着它被联接了两次?
是的,尽管将t2作为一个整体而不是作为日期表的函数来考虑可能更容易:t2是事务表,但具有test_date的实际日期表示形式而不是ID。
我认为本书中的所有内容实际上都有一些上下文,但是看起来这会产生:
我了解obs_cnt变量是在test_date级别汇总的。
它是根据t1 test_date聚合的,这是我们用来选择t2中求和的行的约束。