Explanation of tree-generating query

From: Guyren Howe <guyren(at)gmail(dot)com>
To: PostgreSQL General <pgsql-general(at)postgresql(dot)org>
Subject: Explanation of tree-generating query
Date: 2016-02-02 23:27:54
Message-ID: 4149AB44-016F-40B3-A3E1-F61AD150A406@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I feel like I'm pretty decent with Postgres. But I saw the following query on the excellent Periscope blog. I've no idea how it works, and the various symbols involved are difficult to look up either with google or in the documentation. I believe the @ sign is probably ABS, but the <= clause in the consequent of a when-then is something I haven't seen before. I'm comfortable with the rest. Can someone explain how this works?

with
a as (
select *
from
generate_series(0, 3, 1)
)
, b as (
select *
from
generate_series(-3, 3, 1)
)
, tree as (
select a.generate_series as t
, b.generate_series as branch
from a, b
where
case when mod(a.generate_series, 2) = 1
then @ b.generate_series <= a.generate_series
and mod(@ b.generate_series, 2) = 1
else @ b.generate_series <= a.generate_series
and mod(@ b.generate_series, 2) = 0
end
)

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Dickson S. Guedes 2016-02-02 23:47:18 Re: MongoDB FDW Problem.
Previous Message Adrian Klaver 2016-02-02 23:11:21 Re: handling time series data