database - 压缩表 - Postgresql

标签 database postgresql

我在编写查询时遇到问题,希望有人能提供一些建议。数据与钻孔的地质有关。 From 和 To 字段是钻孔下方的深度。

表 1:

holeID --- | --- From ---|---To---|---FMN---|---Rocktype ---|
MW1------|-------0-------|---10---|-----X-----|--------13-------|
MW1------|-------10-----|---20---|-----X-----|--------122------|
MW1------|-------20-----|---30---|-----Y-----|--------177------|
MW1------|-------30-----|---40---|-----Y-----|--------146------|
MW1------|-------40-----|---50---|-----Z-----|--------145-------|
MW1------|-------50-----|---60---|-----X-----|--------1----------|
MW1------|-------60-----|---70---|-----X-----|--------123-------|
MW1------|-------70-----|---80---|-----X-----|--------121-------|
MW1------|-------80-----|---90---|-----Z-----|--------120-------|

我想将其浓缩为:

holeID --- | --- From ---|---To---|---FMN---|
MW1------|-------0-------|---20---|-----X-----|
MW1------|-------20-----|---40---|-----Y-----|
MW1------|-------40-----|---50---|-----Z-----|
MW1------|-------50-----|---80---|-----X-----|
MW1------|-------80-----|---90---|-----Z-----| 

最佳答案

SQL Fiddle

select holeid, "from", "to", fmn
from (
    select
        holeid,
        first_value("from") over(partition by p order by "from") as "from",
        first_value("to") over(partition by p order by "to" desc) as "to",
        fmn
    from (
        select
            holeid, "from", "to", fmn,
            count(p or null) over(partition by holeid order by "from") p
        from (
            select
                holeid, "from", "to", fmn,
                lag(fmn, 1, '') over(partition by holeid order by "from") != fmn p
            from table1
        ) s
    ) s
) s
group by 1, 2, 3, 4
order by 1, 2

关于database - 压缩表 - Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14587630/

相关文章:

database - 通过 Sitecore API 获取数据库的问题

c# - 应该如何访问数据。工作实践

java - 加载 postgreSQL JDBC 驱动程序

ios - 无限滚动和重复数据

ruby-on-rails - PG::UndefinedColumn:错误:列court.user_id不存在

c# - 如何使用(创建数据库、创建表、查询等)praeclarum sqlite-net?

mysql - 使用 VB.Net 连接到在线 MySQL 数据库

sql - 使用 BETWEEN 子句 SQL 输出缺少名称

sql - Postgres 条件联合?

ruby-on-rails - rails - postgres 用方法触发 Action ?