use*_*850 3 sql postgresql datetime aggregate-functions
我的桌子:
Dataid date register_type read_value 77 2012-08-15 gen 20 77 2012-08-15 solar 48 77 2012-08-16 gen 39 77 2012-08-16 gen 22 80 2012-07-11 gen 11 80 2012-07-12 id 23 91 2012-02-01 id 4 91 2012-02-01 gen 59 91 2012-02-08 gen 18
我希望,每一天,read_values
只为"gen" 做总和register_type
.我基本上希望查询返回下表:
dataid date daily_value 77 2012-08-15 20.00 77 2012-08-16 61.00 80 2012-07-11 11.00 91 2012-02-01 59.00 91 2012-02-08 18.00
我尝试了以下查询,但它不起作用:
select
dataid,
date_trunc('day', timestamp_localtime) as truncated_day,
substring(cast(date_trunc('day', timestamp_localtime) as text)
from 1 for 10) as date,
sum(read_value) as daily_gen
where register_type like ‘%gen%’
from table
group by dataid, date_trunc('day', timestamp_localtime)
order by dataid, truncated_day
Run Code Online (Sandbox Code Playgroud)
我该怎么写这个查询?
Postgres的作品:
SELECT dataid, date, sum(read_value) AS daily_value
FROM tbl
WHERE register_type = 'gen'
GROUP BY 1,2
ORDER BY 1,2
Run Code Online (Sandbox Code Playgroud)
或者你的专栏名称date
实际上不是日期?
如果它实际上是a timestamp
,请date
在我的查询中替换date::date
(转换为timestamp
to date
)并且它应该有效.
(即使Postgres允许,也不应该使用像标识符这样的保留字date
.)