PostgreSQL unnest,带有where子句的int4range

bbk611

我有一个名为的数据表mytable

╔════╤══════════════════════════════╤══════════╗
║ id │ segments                     │ duration ║
╠════╪══════════════════════════════╪══════════╣
║ 1  │ {"[1,4)","[6,13)","[15,19)"} │ 14       ║
╟────┼──────────────────────────────┼──────────╢
║ 2  │ {"[3,16)","[19,22)"}         │ 16       ║
╚════╧══════════════════════════════╧══════════╝

segments是一个以秒为单位的时间间隔数组。
duration是时间间隔的总和,segments以秒为单位。

例如,对于id= 1,三个间隔segments分别为3、7和4秒。他们总共花了14秒duration

我只想从该表中提取同时满足这两个条件的行:

  • 没有任何人segments不少于10秒
  • 有一个duration是至少10秒

该查询仅应返回id= 1,因为其segments每个查询小于10秒duration且至少为10秒。

该查询不应返回id= 2,因为查询之一的segments长度为13秒。duration至少有10秒,但它没有涉及到第一个条件segments

克林

取消横向连接中的数组的嵌套,并通过分组计算总和id使用布尔值聚合bool_and()可消除少于10秒的细分。

select id, segments, sum(elem.upper- elem.lower) as duration
from my_table
cross join unnest(segments) elem
group by id
having bool_and(elem.upper- elem.lower < 10)
and sum(elem.upper- elem.lower) >= 10

Db <>提琴。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PostgreSQL-使用int4range约束创建表

来自分类Dev

PostgreSQL WHERE IN子句变体

来自分类Dev

PostgreSQL WHERE IN 子句

来自分类Dev

PostgreSQL,NOT IN 子句

来自分类Dev

Postgresql unnest 有序数和时间

来自分类Dev

PostgreSQL-GROUP BY子句

来自分类Dev

PostgreSQL:每个IN子句的LIMIT

来自分类Dev

PostgreSQL Multiple USING子句

来自分类Dev

PostgreSQL中的NOT IN子句

来自分类Dev

PostgreSQL用例when产生where子句

来自分类Dev

多列WHERE子句中的PostgreSQL索引

来自分类Dev

WHERE BETWEEN子句中的PostgreSQL jsonb值

来自分类Dev

稀疏连接中的PostgreSQL慢WHERE子句

来自分类Dev

使用条件子查询的Postgresql WHERE子句

来自分类Dev

PostgreSQL在WHERE子句中的多个元组选择

来自分类Dev

稀疏连接中的PostgreSQL慢WHERE子句

来自分类Dev

WHERE 子句的 LHS 中的 PostgreSQL SELECT

来自分类Dev

带有postgreSQL的Django通道

来自分类Dev

带有密码的PostgreSQL认证

来自分类Dev

带有if语句的Postgresql函数

来自分类Dev

带有PostgreSQL的HikariCP:setQueryTimeout(int)尚未实现

来自分类Dev

PostgreSQL WHERE IN LIKE查询

来自分类Dev

Codeigniter where()PostgreSQL

来自分类Dev

Codeigniter where()PostgreSQL

来自分类Dev

PostgreSQL WHERE 和 null

来自分类Dev

PostgreSQL JSON有密钥

来自分类Dev

PostgreSQL有.. AS()的困难

来自分类Dev

我如何获得带有子句的Postgresql来处理多个语句?

来自分类Dev

带有两个子查询的Postgresql查询给出错误:缺少FROM子句?