SELECT created_at::timestamp::date AS date, count(id) AS all FROM myTable
WHERE created_at > current_date - interval '130' day
GROUP BY created_at::timestamp::date
结果我得到了 2 列。 日期和总行数(全部)。
不错。
但我还需要添加通过某些过滤器显示行数的第三列。 这里是另一个 sql 查询:
select count(id) from myTable
where data->'payment'->>'type' = 'card-online'
列 data 的类型为 jsonb。
不错。
但我需要用一个 SQL 查询替换这 2 个 sql 查询。 结果必须是 3 列:date、all、online_count
有可能吗?
答案 0 :(得分:0)
我找到了解决方案。您可以使用过滤器
例如
SELECT created_at::timestamp::date AS date,
COUNT(1) AS all,
COUNT(1) FILTER (WHERE data->'payment'->>'type' = 'card-online') AS online_count
FROM MyTable
WHERE created_at > current_date - interval '130' day
GROUP BY created_at::timestamp::date
ORDER BY created_at::timestamp::date DESC