【发布时间】:2017-03-21 21:04:18
【问题描述】:
我有这样的 hstore 数据:
|brand|account|likes|views |
|-----|-------|-----|----------------------|
|Ford |ford_uk|1 |"3"=>"100" |
|Ford |ford_us|2 |"3"=>"200", "5"=>"10" |
|Jeep |jeep_uk|3 |"3"=>"300" |
|Jeep |jeep_us|4 |"3"=>"400", "5"=>"20" |
我希望能够按键汇总 hstores,按品牌分组:
|brand|likes|views |
|-----|-----|----------------------|
|Ford |3 |"3"=>"300", "5"=>"10" |
|Jeep |7 |"3"=>"700", "5"=>"20" |
This answer 为如何在没有 GROUP BY 的情况下执行此操作提供了一个很好的解决方案。使其适应这种情况会得到类似的结果:
SELECT
sum(likes) AS total_likes,
(SELECT hstore(array_agg(key), array_agg(value::text))
FROM (
SELECT s.key, sum(s.value::integer)
FROM (
SELECT((each(views)).*)
) AS s(key, value)
GROUP BY key
) x(key, value)) AS total_views
FROM my_table
GROUP BY brand
但是这给出了:
错误:子查询使用来自外部查询的未分组列“my_table.views”
任何帮助表示赞赏!
【问题讨论】:
标签: sql postgresql postgresql-9.5