json - Postgresql根据另一个表的组数据统计数据生成JSON

标签 json postgresql

我有两个表格,如下所示:

users
id     name     city           state
1      Bob      Los Angeles    California
2      Susan    Dallas         Texas
3      Joe      Los Angeles    California


activity       
type           user_id
Activation     1
Registration   1
Activation     2
Activation     3

我想计算事件类型 Activation 发生的次数以返回这样的数据集:

[
  {count: 2, city: 'Los Angeles', state: 'California'},
  {count: 1, city: 'Dallas', state: 'Texas'}
]

这是我试过的查询:

SELECT COUNT(*) AS count, user_id,
(SELECT json_agg(users.*) FROM users WHERE activity.user_id = users.id) as users
FROM activity
WHERE type='Activation'
GROUP BY users.city, users.state, user_id

我得到这个错误: 错误:缺少表“users”的 FROM 子句条目

我不确定如何对来自多个表的分组数据进行这样的计数。

这是Postgresql的最新版本

最佳答案

我会首先创建一个提供正确数据的 View ,例如:

CREATE VIEW activations_on_locations AS
    SELECT count(*), U.city, U.state
    FROM users U
    INNER JOIN activity A
        ON U.id = A.user_id
        AND A.type='Activation'
    GROUP BY U.city, U.state;

反对 JSON 查询非常简单:

SELECT json_agg(AOL) FROM activations_on_locations AOL;

关于json - Postgresql根据另一个表的组数据统计数据生成JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53122582/

相关文章:

ios - 从不同 VC 访问时,带有完成处理程序的 API 调用函数崩溃

javascript - 如何将JSON解析后的数据插入MYSQL

sql - 根据 csv 文件值选择

postgresql - 如何使用 Clojure 将 PostgreSQL 函数应用于查询?

javascript - 如何根据key上的过滤器获取json路径?

json - 对于 Restful API,GET 方法可以使用 json 数据吗?

java - Jackson 反序列化是否有继承深度的最大值?

python - 加速 Django 数据库函数以对缺失值进行地理插值

database - Postgres 与 Firebird

sql - 我无法弄清楚 v_out 和 v_in 在 SQL 语句中的含义