I'm trying to get records from the postgressql query below. It does have data but when I tried to retrieve it with psycopg, weirdly it returns empty. Does it work with WITH query or we can only use SELECT instead? Any input would be appreciated, thank you.
query = \
f""" WITH a AS (
SELECT "public"."table_a"."code",
"public"."table_a"."address", sum("public"."table_a"."amount") AS
"sum" FROM "public"."table_a" WHERE "public"."table_a"."address" <> 'KL' GROUP BY
"public"."table_a"."code", "public"."table_a"."address"),
c as (
WITH b AS (
SELECT address, code, count(*) as "total" FROM table_b where created_date between
((current_date + TIME '14:00:00.000+08:00') - interval '7 days') and ((
current_date + TIME '23:59:00.000+08:00') - interval '7 days') group by
address, code order by address, code)
select b.address, table_c.unit_code, table_c.name, sum(b.total *
table_c.amount) as "total" from table_c join b on table_c.code = b.code
group by table_c.unit_code, table_c.name, b.address
order by table_c.unit_code, b.address
)
SELECT a.address, a.code, (a.sum - c.total)::int as output
FROM a join c on a.code = c.unit_code
AND a.address = c.address
ORDER BY a.address, a.code
"""
conn = psycopg2.connect(**params)
cur = conn.cursor()
cur.execute(query)
rows = cur.fetchall()
for row in rows:
print(row)