PostgreSQL 新手,对 JOIN 或 CASE 还没有很好的掌握。
在 select 语句中进行过滤的最佳方法是什么,以便我可以获得以下输出:
- 注册_月
- 总注册数
- business_signups
- total_users
示例表:
示例输出:
这是一个仅输出 3 列(signup_month、total_signups 和total_users)的基本查询。我在添加仅计算signup_email列中的business_signups的第四列时遇到问题,因为它只需要计算=“business”的值
SELECT DATE_PART(month,signup_date) AS signup_month,
COUNT(signup_email) AS total_signups,
SUM(users) AS total_users
FROM signups
GROUP BY signup_month;
最佳答案
您需要条件聚合,在 Postgres 中使用过滤器
。
但是,您可能希望包含年份和月份,因此我建议 date_trunc()
:
SELECT DATE_TRUNC('month', signup_date) AS signup_month,
COUNT(*) AS total_signups,
COUNT(*) FILTER (WHERE signup_email = 'business') as business_signups,
SUM(users) AS total_users
FROM signups
GROUP BY signup_month
关于sql - postgresql - 选择 4 列,其中 1 列需要过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68239702/