[英]Creating multiple count columns conditionally from Date[] Array in Postgres
我正在嘗試為多個日期范圍的返回結果數量創建/迭代計數。 我可以使用以下方法生成所需的結果:
SELECT variant, partner, COUNT(distinct eligible_dates) AS within_last_30_days
FROM (
SELECT partner, variant, unnest(eligible_dates) AS within_last_30_days
FROM product.catalog
) t1
WHERE within_last_30_days > CURRENT_DATE - 30
GROUP BY variant, partner
其中qualified_dates是日期數組列,其他是文本; item1在過去30天內將有4個數組條目(盡管在過去90天內可能有8個數組條目),並且它將顯示如下表格:
variant | partner | within_last_30_days
________________________________________
item1 | p1 | 4
item2 | p2 | 3
但是我在語法上遇到麻煩,因為我試圖創建另一列在過去90天內可以看到的列...
variant | partner | within_last_30_days | within_last_90_days
______________________________________________________________
item1 | p1 | 4 | 8
item2 | p2 | 3 | 3
我非常感謝您提供的任何幫助。 謝謝!
您應該只使用GROUP BY
就能做到這一點。 在這種情況下,橫向聯接會有所幫助:
SELECT c.partner, c.variant,
COUNT(DISTINCT CASE WHEN e.eligible_date > CURRENT_DATE - 30 THEN e.eligible_date END) as within_last_30_days,
COUNT(DISTINCT CASE WHEN e.eligible_date > CURRENT_DATE - 90 THEN e.eligible_date END) as within_last_90_days
FROM product.catalog c CROSS JOIN LATERAL
unnest(c.eligible_dates) as e(eligible_date)
GROUP BY c.variant, c.partner;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.