表中每天的值总和

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)

我该怎么写这个查询?

Erw*_*ter 5

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(转换为timestampto date)并且它应该有效.
(即使Postgres允许,也不应该使用像标识符这样的保留字date.)