postgresql 不按我的时间戳聚合

标签 postgresql aggregate-functions

我有如下的 sql:

with CTE as (
select user_id,level,plugged,plugged_ac,plugged_usb,created_at from probe_batteries where          probe_batteries.user_id='91' and probe_batteries.created_at > timestamp '2014-06-07 17:00:00'
and probe_batteries.created_at < timestamp '2014-06-07 23:00:00'
) 
select CTE.user_id as user_id, avg(CTE.level), bool_or(CTE.plugged), bool_or(CTE.plugged_ac), bool_or(CTE.plugged_usb),date_trunc('second',CTE.created_at) as created_at
from CTE
group by created_at, user_id
order by created_at asc

但是表结果并没有按照timestamp类型的created_at(见结果最后一列)聚合

91;95.0000000000000000;f;f;f;"2014-06-07 20:46:06"
91;95.0000000000000000;f;f;f;"2014-06-07 21:19:11"
91;95.0000000000000000;f;f;f;"2014-06-07 21:19:12"
91;95.0000000000000000;f;f;f;"2014-06-07 21:19:12"
91;95.0000000000000000;f;f;f;"2014-06-07 21:19:12"
91;95.0000000000000000;f;f;f;"2014-06-07 21:19:13"
91;95.0000000000000000;f;f;f;"2014-06-07 21:19:13"
91;95.0000000000000000;f;f;f;"2014-06-07 21:19:13"
91;95.0000000000000000;f;f;f;"2014-06-07 21:19:14"

是不是我的sql语句有问题?谢谢

最佳答案

您的表达式别名 created_at 匹配您的 CTE 命名子查询的列名。

尝试改用另一个别名,例如:

WITH CTE AS (
  SELECT user_id,level,plugged,plugged_ac,plugged_usb,created_at
    FROM probe_batteries
   WHERE user_id='91' AND created_at > timestamp '2014-06-07 17:00:00'
     AND created_at < timestamp '2014-06-07 23:00:00'
) 
SELECT CTE.user_id as user_id, avg(CTE.level), bool_or(CTE.plugged),
       bool_or(CTE.plugged_ac), bool_or(CTE.plugged_usb),
       date_trunc('second',CTE.created_at) AS dt_at
  FROM CTE
 GROUP BY dt_at, user_id
 ORDER BY dt_at ASC;

关于postgresql 不按我的时间戳聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482188/

相关文章:

postgresql - 如何使用 PL/pgSQL 将静态字符串附加到格式化数组

postgresql - 如何使用/打开 psql?

c++ - 通过 libpqxx 将数据插入 PostgreSQL 时出现问题

sql - 在 Postgres 中搜索整数数组

python - Google App Engine Django App Admin 登录导致 502

SQL 服务器。聚合函数中使用子查询计算公式

sql - 为什么 SUM(COL1 + COL2) 和 SUM(COL1) + SUM(COL2) 会产生不同的结果?

sql - PostgreSQL - 从条件聚合结果中删除 NULLS 行和列

sql-server - 聚合函数返回 null

mysql - 我可以用其他临时表创建一个临时表吗