Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何返回分组用户id的最近值?_Postgresql - Fatal编程技术网

Postgresql 如何返回分组用户id的最近值?

Postgresql 如何返回分组用户id的最近值?,postgresql,Postgresql,如何使结果只返回每个分组用户id的最后一个条目。下面的示例 此外,任何改进查询的方法都将受到高度赞赏属性是一个hstore列 SELECT user_id, json_agg(to_json(properties -> 'following') ORDER BY id DESC) AS followings, json_agg(to_json(properties -> 'assumed_gender') ORDER BY id DESC) AS assumed_genders, j

如何使结果只返回每个分组用户id的最后一个条目。下面的示例

此外,任何改进查询的方法都将受到高度赞赏<代码>属性是一个hstore列

SELECT user_id, json_agg(to_json(properties -> 'following')
ORDER BY id DESC) AS followings,
json_agg(to_json(properties -> 'assumed_gender') ORDER BY id DESC) AS assumed_genders,
json_agg(to_json(properties -> 'email') ORDER BY id DESC) AS emails,
json_agg(to_json(properties -> 'first_name') ORDER BY id DESC) AS first_names,
json_agg(to_json(properties -> 'last_name') ORDER BY id DESC) AS last_names,
json_agg(to_json(properties -> 'country_name') ORDER BY id DESC) AS country_names,
json_agg(to_json(properties -> 'city_name') ORDER BY id DESC) AS city_names,
json_agg(to_json(properties -> 'mobile_number') ORDER BY id DESC) AS mobile_numbers,
json_agg(to_json(properties -> 'submission_url') ORDER BY id DESC) AS submission_urls
FROM "daily_statistics" WHERE "daily_statistics"."campaign_id" = 72 AND "daily_statistics"."metric" = 'participation'
GROUP BY user_id ORDER BY max(id) DESC;
结果是:

 user_id |    followings     | assumed_genders |                emails                 |    first_names     |     last_names     |  country_names   |     city_names     |        mobile_number
s        |                         submission_urls
---------+-------------------+-----------------+---------------------------------------+--------------------+--------------------+------------------+--------------------+---------------------
---------+------------------------------------------------------------------
      16 | ["false", "true"] | ["", ""]        | ["lorem@lorem.com", "lorem@amet.com"] | ["dolor", "ipsum"] | ["lorem", "ipsum"] | ["amet", "amet"] | ["dolor", "ipsum"] | ["9707759365", "2572
943441"] | ["http://www.dolor.com/hgtsjcbn", "http://www.sit.com/qlnogrzd"]
(1 row)
预期结果:

 user_id |    followings     | assumed_genders |                emails                 |    first_names     |     last_names     |  country_names   |     city_names     |        mobile_number
s        |                         submission_urls
---------+-------------------+-----------------+---------------------------------------+--------------------+--------------------+------------------+--------------------+---------------------
---------+------------------------------------------------------------------
      16 | "true"            | ""              | "lorem@amet.com"                      | "ipsum"            | "ipsum"            | "amet"           | "ipsum"            |         "2572
943441"  | "http://www.sit.com/qlnogrzd"
(1 row)

select distinct on (user_id)
    user_id,
    to_json(properties -> 'following') as followings,
    to_json(properties -> 'assumed_gender') as assumed_genders,
    to_json(properties -> 'email') as emails,
    to_json(properties -> 'first_name') as first_names,
    to_json(properties -> 'last_name') as last_names,
    to_json(properties -> 'country_name') as country_names,
    to_json(properties -> 'city_name') as city_names,
    to_json(properties -> 'mobile_number') as mobile_numbers,
    to_json(properties -> 'submission_url') as submission_urls
from "daily_statistics"
where
    "daily_statistics"."campaign_id" = 72
    and "daily_statistics"."metric" = 'participation'
order by user_id, id desc

SELECT DISTINCT ON(表达式[,…])仅保留给定表达式计算结果相等的每组行的第一行。DISTINCT ON表达式使用与ORDER BY相同的规则进行解释(见上文)。请注意,每个集合的“第一行”是不可预测的,除非使用ORDER BY来确保所需的行首先出现


这是可行的,但如果我想将其中一列(即
submissions\u url
)保留为数组而不是唯一的不同值,该怎么办?这可能吗?