PostgreSQL问题

nkkqxpd9  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(115)

我有一张这样的table:

name   used   time  
asd    10     15:00  
bsf    15     15:00  
asd    20     14:55  
bsf    0      14:55

字符串
我需要做一个查询,返回像这样的值:我需要的grafana时间序列的结果是:

total   tm
25       15:00
20       14:55


我试过使用:

SELECT
 DISTINCT(time) as tm,
 sum(used) as total
FROM table
GROUP BY tm


但这并不起作用,我尝试的每件事都给了我重复的时间值

ymzxtsji

ymzxtsji1#

在使用时间戳时,查看postgres文档是一个很好的开始。以下是按HH:MI:SS分组和聚合的方法:

with my_table as (
  select current_timestamp as time_column, 20 as used union all
  select current_timestamp, 5 union all
  select current_timestamp - INTERVAL '10 Seconds', 15
  )
select to_char(time_column,'HH24:MI:SS') as time_col, sum(used) as used
from my_table
group by 1
order by 1;

字符串
| 使用| used |
| --| ------------ |
| 十五个| 15 |
| 二十五个| 25 |
基本上,这种类型的铸造是你的朋友:

to_char(time_column,'HH24:MI:SS')

8zzbczxx

8zzbczxx2#

我使用date_trunc()函数选择时间值来解决这个问题,因为该列的类型是timestamptz查询最终看起来像这样select date_trunc('minute',time)as tm,sum(used)as total from table group by tm

hsvhsicv

hsvhsicv3#

您正在寻找一个简单的GROUP BY

CREATE TABLE Table1
    ("name" varchar(3), "used" int, "time" varchar(5))
;
    
INSERT INTO Table1
    ("name", "used", "time")
VALUES
    ('asd', 10, '15:00'),
    ('bsf', 15, '15:00'),
    ('asd', 20, '14:55'),
    ('bsf', 0, '14:55')
;

个字符
| 计时器| time |
| --| ------------ |
| 下午15点| 15:00 |
| 14点55分| 14:55 |

SELECT 2


fiddle

相关问题