一个查询中的不同计数列

时间:2021-02-15 12:07:29

标签: postgresql-9.3

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 列:dateallonline_count

有可能吗?

1 个答案:

答案 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
相关问题