如何解决一个查询中的不同计数列
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
有可能吗?
解决方法
我找到了解决方案。您可以使用过滤器
例如
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。